JavaScript 中的原型和 __proto__
Prototypes and __proto__ in JavaScript
Object
是一个函数
Object.prototype
是一个对象,其构造函数是 Object
本身。
但是 Object()
是什么?
有人可以解释为什么这个语句输出 true
Object.prototype.__proto__ === Object().__proto__.__proto__
But what is Object()?
计算 Object()
会根据对象原型生成一个新的空对象。
can some explain why this statement outputs true
Object.prototype.__proto__ === Object().__proto__.__proto__
Object()
生成一个基于对象原型的新对象。对于从特定原型创建的对象,__proto__
是对该原型的引用。
因此,Object.prototype
和 Object().__proto__
都引用相同的值:
console.log(Object.prototype === Object().__proto__)
因为这两个指的是同一个东西,所以你上面的相等表达式也是正确的。 (顺便说一句 Object.prototype.__proto__
是 null
,所以它也等于任何其他 null
值)。
这是真的,因为他们两个 return null :)
Object.prototype.__proto__ === Object().__proto__.__proto__
Object
是一个函数
Object.prototype
是一个对象,其构造函数是 Object
本身。
但是 Object()
是什么?
有人可以解释为什么这个语句输出 true
Object.prototype.__proto__ === Object().__proto__.__proto__
But what is Object()?
计算 Object()
会根据对象原型生成一个新的空对象。
can some explain why this statement outputs true
Object.prototype.__proto__ === Object().__proto__.__proto__
Object()
生成一个基于对象原型的新对象。对于从特定原型创建的对象,__proto__
是对该原型的引用。
因此,Object.prototype
和 Object().__proto__
都引用相同的值:
console.log(Object.prototype === Object().__proto__)
因为这两个指的是同一个东西,所以你上面的相等表达式也是正确的。 (顺便说一句 Object.prototype.__proto__
是 null
,所以它也等于任何其他 null
值)。
这是真的,因为他们两个 return null :)
Object.prototype.__proto__ === Object().__proto__.__proto__