javascript - 具有自引用的对象和数组

标签 javascript

我对了解 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/

相关文章:

javascript - 使用 React Hooks 输入千位分隔符

javascript - 动态填充用户

javascript - 在从 Phonegap 相机捕获的图像上绘制文本(自定义文本)

php - Datepicker将生成一份报告

javascript - 如何提高React Redux性能?

javascript - jQuery ajax 填充 html 表

javascript - 如何使用 ajax/json 让对象一个接一个地淡入淡出

javascript - 创建一个通知栏

javascript - 根据 Angular 查找旋转图像的大小以匹配顶线

javascript - 是否可以使用地理位置作为条件来发出通知?