gpt4 book ai didi

Javascript 属性是一个对象,与对象不同

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

我想不通……

我定义了两个简单的对象:

 var adam = {
name: "Adam",
spouse: terah

}

var terah = {
name: "Terah",
age: 32,
height: 66,
weight: 125,
hairColor: "brown",
spouse: adam
}

我唯一关心的属性(property)是配偶的属性(property)。当我测试时:

console.log(terah.spouse.spouse);
> Object {name: "Terah", age: 32, height: 66, weight: 125, hairColor: "brown"…}

我在这里得到了我想要的对象。但是当我把它作为条件时

terah.spouse.spouse === terah;
>false

我错了...这是为什么?它似乎指向同一个对象。即使我打电话

terah.spouse.spouse.name === "Terah"
>true

我说得对。为什么我的条件对象会得到 false?谢谢。`

最佳答案

真正实现这一目标的唯一方法是:

var adam = {
name: "Adam"
};

var terah = {
name: "Terah",
age: 32,
height: 66,
weight: 125,
hairColor: "brown"
};

adam.spouse = terah;
terah.spouse = adam;

在初始化“adam”的对象文字中引用变量“terah”并不是一个错误(感谢var声明的提升),但是在这一点上代码被评估后,“terah”的值将是未定义。事实上,它后来被赋予一个值并不重要。

(“terah”的对象字面量可以指“adam”的“spouse”属性,但为了清楚起见,我将其分开。)

请注意,像这样的循环引用不能序列化为 JSON。它可能不会抛出异常,但无法像 JSON 那样表示循环。

关于Javascript 属性是一个对象,与对象不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20844257/

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