function Foo() {}
Foo.prototype.x = 1
foo = new Foo()
foo2 = new Foo()
foo2.x = 2
Foo.prototype.x = 3
console.log("foo.x = ", foo.x)
console.log("foo2.x = ", foo2.x)
=> foo.x = 3
=> foo2.x = 2
上面创建了两个对象,inherited property
一个对象的更新,然后它们prototype's property
的更新。为什么更新后的对象保留了自己的新值,而另一个跟踪了prototype's
?
@编辑
上面的表达式 ,the inherited property of one object is updated
在上面的上下文中似乎具有误导性。
实际上,当设置了本地不存在 的 a 时,即使已经包含它,shadow property
也会在 上创建a。在这种情况下,从. 之后,这具有立即被访问的权利。object
property
prototype
prototype's properties
object
local shadow property