gpt4 book ai didi

javascript - 更改父对象,不会更改其他对象的原型(prototype)链

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

我有两个对象 foo 和 bar。 Object.create 构建的对象 bar 将其原型(prototype)设置为 foo - 好的。当我更新 foo 属性时一切正常,但是当我将整个 foo 对象更改为数字时,对象栏不会改变。好像之前的对象 foo 在某个地方但我不知道在哪里。我对此很好奇。

var foo = { name: "foo" };
var bar = Object.create(foo);
foo = 2 //I change foo
console.log(bar)

//in Chrome console I see:
Object {}
__proto__: Object // __proto__ of bar shows to object
name: "foo"
__proto__: Object

帮助。也许我错过了一些明显的东西。

最佳答案

因为您的foo 只是对该对象的引用。当您将其设置为原型(prototype)时,它会在 bar 中创建第二个引用并引用同一对象。然后,当您更改 foo variable(它只是对该对象的引用)以保留另一个变量(如数字)时,它会删除 foo 引用来自对象。所以你只有一个引用,它在引用对象的 barprototype 中。

[] 被认为是变量的值。

                        -----
foo[obj address] ---> |obj|
-----
^
|
bar.prototype[obj address]

foo = 2 之后

                        -----
foo[2] |obj|
-----
^
|
bar.prototype[obj address]

关于javascript - 更改父对象,不会更改其他对象的原型(prototype)链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46250732/

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