Fla*_*ash 3 javascript javascript-objects
以下有什么区别?对我来说,它们看起来是等价的,但是一个导致循环数据结构而另一个不导致.
var a = {};
a = {prop: a};
JSON.stringify(a); // {"prop":{}}
var b = {};
b.prop = b;
JSON.stringify(b); // TypeError: Circular
Run Code Online (Sandbox Code Playgroud)
为什么prop: a第2行不指向对象a并导致循环数据结构?
{prop: a}在分配之前进行评估a.当它被评估时,a仍然指向原始的空对象.结果是一个具有引用原始属性的新对象.
相反,使用引用该对象的新属性b.prop = b修改原始b对象.在b对右侧的计算结果不是简单的"没有属性设置单色对象"; 它指的是一个特定的对象,特别是你正在修改的对象.
| 归档时间: |
|
| 查看次数: |
43 次 |
| 最近记录: |