[英]What is the hierarchy of Object.prototype in javascript?
我不理解以下代码的输出。
var obj = {}
console.log(Object);
console.log(Object.__proto__);
console.log(obj.prototype);
输出:
ƒ Object() { [native code] }
ƒ () { [native code] }
undefined
让我们一看这三种情况
console.log(Object); // ƒ Object() { [native code] }
上面的代码返回一个函数,因为Object
是用Javascript定义的构造函数,用于创建对象属性
console.log(Object.__proto__); // ƒ () { [native code] }
上面的示例返回一个函数,因为Object.__proto__
将与Function.prototype
相同,后者给出
console.log(obj.prototype); // undefined
上面的代码返回undefined,因为未为显式创建的对象定义prototype属性。 prototype属性是为构造函数定义的,因此Object.prototype
将为您提供与obj.__proto__
相同的Objects
原型。
Object.__proto__ === Function.prototype && Function.prototype.__proto__.constructor === Object
这是一个周期性的联系。 从Function
“继承”所有Function
,从Object
“继承”所有对象。 所有对象都是从构造函数创建的,有趣的是,所有构造函数都是对象。 那么,首先创建对象或函数的是什么? 没有一个。 程序员是凭空创建它们的,并在引擎代码中编写了创建语句。
Object
, Function
, Array
是内置的构造函数。
__proto__
(其等于__proto__.constructor.prototype
)和prototype
是对象。
由于__proto__
从Object'继承'的,因此所有函数(以及JavaScript中的几乎所有内容) inherit
间接inherit
自Object。
*“继承”是指在对象本身未直接找到属性的情况下,委托给对象的构造函数原型
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.