Javascript设置&阴影属性(原型链)
Javascript Setting & Shadowing Properties (The prototype chain)
我正在读Kyle Simpson的《这个和对象原型》一书,在"原型"章节的"设置和阴影属性"部分之前,一切似乎都很清楚,我在myObject.foo="bar"任务的三个场景中迷失了方向,尤其是第一个
- 如果在[[Prototype]]链的更高位置找到一个名为foo的普通数据访问器(请参见第3章)属性,并且该属性未标记为只读(可写:false),则会将一个名为foo的新属性直接添加到myObject中,从而生成一个阴影属性
- 如果在[[Prototype]]链的更高位置找到一个foo,但它被标记为只读(可写:false),则不允许设置该现有属性以及在myObject上创建阴影属性。如果代码在严格模式下运行,则会引发错误。否则,属性值的设置将被忽略。无论哪种方式,都不会出现阴影
- 如果在[[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"。
相关文章:
- 附加到原型属性的Do函数没有闭包
- 日期原型属性
- JS构造函数的原型属性与其原型之间的区别
- 为什么函数对象的实例没有继承函数原型属性
- 为什么浏览器显示原型属性不同
- 为什么在Function.prototype上没有原型属性
- 函数的原型属性
- 原型继承和原型属性
- 在JavaScript中,函数的默认值是多少'的原型属性
- Chrome 不支持 Javascript 中的原型属性吗?
- 我应该在JavaScript中将什么连接到子原型属性
- 更新 JavaScript 中的原型属性
- 请解释有关 JavaScript 中的原型属性和函数构造函数的详细信息
- 为什么原型函数无法读取原型属性
- 与对象属性同名的原型属性
- 如何获取原型属性列表
- 构造函数中的方法与函数的原型属性之间的差异
- JavaScript 原型属性
- 函数对象__proto__和原型属性
- 未在自定义 OL3 控件的构造函数中定义的原型属性