Javascript设置&阴影属性(原型链)

时间:2016-04-14 14:06:31

标签: javascript

我正在阅读Kyle Simpson“this& Object Prototypes”预定所有内容都要清楚,直到“Prototypes”章节中的“设置和阴影属性”部分,我在3个场景中迷失了myObject.foo =“bar”赋值,特别是第一个

  1. 如果在[[Prototype]]链的任何地方找到一个名为foo的普通数据访问器(参见第3章)属性,并且它没有标记为只读(可写:false),则调用一个新属性foo直接添加到myObject,从而产生阴影属性。
  2. 如果在[[Prototype]]链上发现foo更高,但它被标记为只读(可写:false),则表示该现有属性的设置以及阴影的创建不允许myObject上的属性。如果代码在严格模式下运行,则会引发错误。否则,将无提示地忽略属性值的设置。无论哪种方式,都不会发生阴影。
  3. 如果在[[Prototype]]链上发现foo更高并且它是一个setter(参见第3章),那么将始终调用setter。不会将foo添加到(也称为阴影)myObject,也不会重新定义foo setter。
  4. 数据访问者”是什么意思

    由于

1 个答案:

答案 0 :(得分:0)

或多或少:

1)如果在myObject的原型中找到任何'foo'并且它不是只读的或者是setter,它将被覆盖为仅仅为myObject的'bar'。

2)如果在myObject的原型中找到任何'foo'并且它是只读的,'foo'将保持不变,任何东西都不会被覆盖。如果你在严格模式下运行,你会收到错误。

3)如果在myObject的原型中找到任何'foo'并且它是一个setter,那么将调用该setter方法而不是被覆盖为'bar'。