JavaScript原型链

122 阅读1分钟

访问一个对象的属性时,先在基本属性中找,如果没有,再沿着__proto__这条链去找,这就是原型链

一:概念

原型链是一种机制,每一个实例对象(通过new XX()得到的实例)都有一个私有属性(_proto_)指向它的构造函数的原型对象(prototype)。该原型对象也有一个自己的原型对象(_proto_),层层向上知道有一个对象的原型对象为null。就到达了原型链的终点,即null没有原型,是原型链的终点。

二:作用

原型链的存在,主要是为了实现对象的继承。原型链是基于__proto__的。

三:原型对象(prototype)

一个函数对象,会包含一个预定义的属性,叫做原型对象,即prototype

由上图可知,一个函数对象的prototype

{
    constructor: ....
    __proto__: Object
}

普通对象的原型对象为undefined

四:__proto__

JavaScript在创建对象的时候,都会有一个[[proto]]的私有属性,原型对象也有[[proto]]属性,因此在不断的指向中,就形成了原型链。

修改原型对象后