Warum gibt Object.getOwnPropertyDescriptor({}, '__proto__')
undefined
zurück?Warum gibt Object.getOwnPropertyDescriptor ({}, '__proto__') undefined zurück?
Liegt das daran, dass __proto__
ursprünglich nicht eine Userland-Eigenschaft war?
Warum gibt Object.getOwnPropertyDescriptor({}, '__proto__')
undefined
zurück?Warum gibt Object.getOwnPropertyDescriptor ({}, '__proto__') undefined zurück?
Liegt das daran, dass __proto__
ursprünglich nicht eine Userland-Eigenschaft war?
__proto__
ist keine eigene Eigenschaft. Es ist eine Eigenschaft von Object.prototype
, bei der es sich um einen Getter oder Setter handelt, der intern implementiert wird, um den Prototyp des Objekts abzurufen und festzulegen ([[Prototype]]
).
< Object.getOwnPropertyDescriptor(Object.prototype, '__proto__')
> Object {enumerable: false, configurable: true, get: function..., set: function...}
Die __proto__
ist eine erbliche Eigenschaft von Objekt prototype
:
Object.getOwnPropertyNames({}) // prints "[]", no properties
'__proto__' in {} // prints "true", it's inherited from prototype
Sie können die __proto__
Descriptor aus dem prototype
direkt erhalten:
Object.getOwnPropertyDescriptor(Object.getPrototypeOf({}), '__proto__');
// prints {enumerable: false, ... }