为什么Object.getOwnPropertyDescriptor({},' __ proto __')返回undefined?

时间:2016-03-20 17:23:29

标签: javascript

为什么Object.getOwnPropertyDescriptor({}, '__proto__')会返回undefined

是因为__proto__最初实际上不是用户地产吗?

2 个答案:

答案 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, ... }