我对了解 JavaScript 行为非常感兴趣。
对象:
object = {object : window.object};
object = {object : window.object};
console.log(object === object); // true
console.log(object.object === object); // false
console.log(object.object === object.object); // true
console.log(object.object.object === object.object); // false
数组:
array = [window.array];
array = [window.array];
console.log(array === array); // true
console.log(array[0] === array); // false
console.log(array[0] === array[0]) // true
console.log(array[0][0] === array[0]) // false
为什么
object.object.object === object.object
返回假???
最佳答案
完成第一个作业后,您将获得以下结果:
object = { object: undefined }
第二个赋值创建一个 new 对象,其 object
属性包含 window.object
的先前值,并将其分配给 对象
。所以现在你有:
object = { object: { object: undefined } }
所以此时object.object
是{ object: undefined }
,与object
不一样。
数组示例中也会发生类似的情况。
如果你想创建一个自引用对象,你需要这样做:
object = {};
object.object = object;
这不会在第二次赋值中创建新对象,而是修改原始对象。那么你可以这样做:
console.log(object.object.object.object === object); // true
对于数组来说,它是:
array = [];
array[0] = array;
console.log(array[0][0][0][0][0] === array); // true
关于javascript - 具有自引用的对象和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31193775/