从原型到原型链

340 阅读1分钟

从原型到原型链

前置概念

1.JavaScript分为函数对象和普通对象,每个对象都有__proto__属性,但是只有函数对象才有prototype属性。

2.Object、Function都是js内置的函数,其他还有Array、RegExp、Date、Boolean、Number、String

3.JavaScript所有数据都可以以对象形式表现,用构造函数方法使得Number、Boolean、String变成对象。

公式

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

图示

每个实例对象( object )都有一个私有属性(称之为 __proto__ )指向它的构造函数的原型对象(prototype )。该原型对象也有一个自己的原型对象( __proto__ ) ,层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节。

avatar