gpt4 book ai didi

javascript - JS : capture a static snapshot of an object at a point in time with a method

转载 作者:行者123 更新时间:2023-11-30 23:47:19 25 4
gpt4 key购买 nike

我有一个 JS 对象,用于存储 DOM 信息,以便在复杂的 GUI 中轻松引用。

它是这样开始的:

var dom = {
m:{
old:{},

page:{x:0,y:0},
view:{x:0,y:0},

update:function(){
this.old = this;
this.page.x = $(window).width();
this.page.y = $(window).height();
this.view.x = $(document).width();
this.view.y = window.innerHeight || $(window).height();
}

我在窗口调整大小时调用该函数:

$(window).resize(function(){dom.m.update()});

问题出在 dom.m.old 上。我本以为,在分配其他属性的新值之前,在 dom.m.update() 方法中调用它,在任何时间点 dom.m.old 都会包含一个快照截至上次更新的 dom.m 对象 - 但相反,它始终与 dom.m 相同。我刚刚得到了一个毫无意义的递归方法。

为什么这不起作用?如何获得在没有明确告知的情况下不会更新的对象的静态快照?

非常欢迎解释我为什么不应该一开始就远程做任何事情的评论:)

最佳答案

this 是对对象的引用。您没有存储对象的副本。您正在存储对该对象的引用。如果您想要副本,则需要手动复制属性。最简单的方法是使用$.extend() :

this.old = $.extend({}, this);

关于javascript - JS : capture a static snapshot of an object at a point in time with a method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2628967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com