gpt4 book ai didi

JavaScript foo = foo.bar = foobar

转载 作者:行者123 更新时间:2023-11-28 00:04:28 25 4
gpt4 key购买 nike

我对我正在使用的应用程序中遇到的一些事情感到非常困惑。

我的对象中有一个名为 move 的方法,它在单击列表项时执行此操作(简化)。

var board = {
move: function() {
var unique_id = Puzzle.pieces.id = 28;
// More stuff going on with the unique_id variable.
},
}

然后在整个应用程序中,Puzzle.pieces.id 用于将 id 分配给其他内容,如下所示:

$('#puzzle-piece-' + Puzzle.pieces.id + '');

经过一段时间的思考,我得出了以下结论:调用该方法时,unique_id 会为 Puzzle 命名空间对象中的pieces 对象分配一个临时属性。然后,当单击新的列表项时,该属性会被新的属性覆盖值(value)。

如果这是正确的,那么在整个应用程序中快速提供临时值是一种常见的做法吗?如果不是,它到底有什么作用?

最佳答案

此声明:

 var unique_id = Puzzle.pieces.id = 28;

与这些完全相同:

 var unique_id;
Puzzle.pieces.id = 28;
unique_id = Puzzle.pieces.id;

因此,它将 28 分配给 Puzzle.pieces 对象的“id”属性,然后将该值分配给局部变量 unique_id。需要注意的重要事项是,对“id”属性的赋值发生在对局部变量的赋值之前,并且“id”属性实际上与局部变量没有太大关系除了作为其值(value)的来源。否则两者是独立的,并且其中一个可以在之后更改而不影响另一个。

“id”属性没有任何临时性。如果它已经存在,则该代码会为其赋予新值。如果它不存在,那么它就会被创建。在任何一种情况下,该属性都会保留下来,直到被明确删除为止。

编辑 - 在注释中正确指出 Puzzle.pieces 对象可以为“id”属性定义一个 setter 函数,这意味着该属性可能不是28。因此,真实等价物是

 var unique_id;
Puzzle.pieces.id = 28;
unique_id = 28;

初始化

var unique_id = Puzzle.pieces.id = 28;

被解析为

var unique_id = (Puzzle.pieces.id = 28);

并且外部 = 右侧的值将始终为 28

关于JavaScript foo = foo.bar = foobar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31483812/

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