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

Javascript Setting & Shadowing Properties (The prototype chain)

本文关键字:原型 属性 阴影 设置 amp Javascript      更新时间:2024-06-19

我正在读Kyle Simpson的《这个和对象原型》一书,在"原型"章节的"设置和阴影属性"部分之前,一切似乎都很清楚,我在myObject.foo="bar"任务的三个场景中迷失了方向,尤其是第一个

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

中的"数据访问器"是什么意思

感谢

或多或少:

1) 如果在myObject的原型中发现任何"foo",并且它不是只读的或setter,则它将被覆盖为仅用于myObject的"bar"。

2) 如果在myObject的原型中发现任何"foo",并且它是只读的,则"foo"将保持不变,任何内容都不会被覆盖。如果你在严格模式下运行,你会得到一个错误。

3) 如果在myObject的原型中发现任何"foo",并且它是一个setter,则会调用该setter方法,而不是将其覆盖为"bar"。