繁体   English   中英

JavaScript中Object.prototype的层次结构是什么?

[英]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 “继承”所有对象。 所有对象都是从构造函数创建的,有趣的是,所有构造函数都是对象。 那么,首先创建对象或函数的是什么? 没有一个。 程序员是凭空创建它们的,并在引擎代码中编写了创建语句。

ObjectFunctionArray是内置的构造函数。

__proto__ (其等于__proto__.constructor.prototype )和prototype是对象。

由于__proto__从Object'继承'的,因此所有函数(以及JavaScript中的几乎所有内容) inherit间接inherit自Object。

*“继承”是指在对象本身未直接找到属性的情况下,委托给对象的构造函数原型

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM