原型与原型链

2019-04-11  本文已影响0人  December1224

JavaScript中除了基本类型外的数据类型,都是对象。但是由于其没有 类(class,ES6引入了class)的概念,如何将所有对象联系起来就成了一个问题,于是就有了原型和原型链的概念。
每个实例对象(object )都有一个私有属性(称之为 proto)指向它的原型对象(prototype)。该原型对象也有一个自己的原型对象 ,层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节。
事实上 JavaScript 所有数据都可以以对象的形式表现:由于函数是对象,我们可以用构造函数的方法使得 Number、Boolean、String变成对象。

下面以 Number 为例
可以用 var 基本类型 = new 对应基本类型的函数() 的方法创建一个新的函数

var n = new Number() 创建一个 Number 函数,其是一个对象。

var 对象 = new 函数()

对象.proto === 对象的构造函数.prototype

我们已经知道

var n = new Number()

n.proto === Number.prototype //true

那么 Number.proto

Number 的原型对象是Function,即 Number 是 Function 的实例

即有

Number.proto === Function.prototype

那么同理

var object = new Object()

object.proto === Object.prototype

Object.proto === Function.prototype

再进一步推断

var function = new Function()

function.proto === Function.prototype

Function.proto === Function.prototype

上一篇下一篇

猜你喜欢

热点阅读