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