为什么Object.getOwnPropertyDescriptor({}, '__proto__')
会返回undefined
?
是因为__proto__
最初实际上不是用户地产吗?
答案 0 :(得分:3)
__proto__
不是自己的财产。它是Object.prototype
的属性,它是内部实现的getter或setter,用于获取和设置对象的原型([[Prototype]]
)。
< Object.getOwnPropertyDescriptor(Object.prototype, '__proto__')
> Object {enumerable: false, configurable: true, get: function..., set: function...}
答案 1 :(得分:0)
__proto__
是来自对象prototype
的继承属性:
Object.getOwnPropertyNames({}) // prints "[]", no properties
'__proto__' in {} // prints "true", it's inherited from prototype
您可以直接从__proto__
获取prototype
描述符:
Object.getOwnPropertyDescriptor(Object.getPrototypeOf({}), '__proto__');
// prints {enumerable: false, ... }