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
?Update прототипа после создания объекта
@EDIT
Выражение выше, the inherited property of one object is updated
, кажется, вводит в заблуждение в приведенном выше контексте.
В самом деле, shadow property
будет создан на object
, когда локально несуществующие property
установлен, даже если prototype
уже содержит его. В этом случае prototype's properties
готовы только с точки зрения object
. Впоследствии это local shadow property
имеет непосредственное право на доступ.
Потому что Javascript работает так. Если свойство не найдено в объекте, оно выполняется через цепочку прототипов объекта. – MaxArt