作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 __proto__
周围使用方括号时在一个对象中,__proto__
是可枚举的。未提供方括号时,__proto__
是不可枚举的。
例子:
obj = {"__proto__": "Hello"}
for (var k in obj)
{
console.log(k)
};
// No Output
obj = {["__proto__"]: "Hello"}
for (var k in obj)
{
console.log(k)
};
// Output:
// __proto__
最佳答案
这是描述in the specification . __proto__
的计算属性名称被明确排除在 isProtoSetter
之外检查,而 __proto__
的正常字符串值被允许:
- If propKey is the String value
__proto__
and if IsComputedPropertyKey(PropertyName) is false, then
a. Let isProtoSetter be true.
- Else,
a. Let isProtoSetter be false.
isProtoSetter
flag,当为真时,表示创建的对象应该有一个与该键配对的值的内部原型(prototype)。
__proto__
因为对象的标准内部原型(prototype)是不可枚举的 - 它存在于
Object.prototype
:
console.log(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__'));
__proto__
的普通属性。 , 并且对象初始值设定项中的普通属性变得可枚举。
关于javascript - 为什么 __proto__ 周围的方括号使其在对象中可枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66556087/
我是一名优秀的程序员,十分优秀!