原型链(三句话搞定原型链)


首先:图上的三列分别表示实例、构造函数、原型对象。bash

一、实例:经过构造函数new出来的一个对象。函数

      

function Person(name){
    this.name=name
}
var person1=new Person("nanxin") //这里的 person1 就是实例
复制代码

二、构造函数:经常用大写字母开头,好比  function Person()学习

function Person(name){
    this.name=name
}复制代码

三、原型对象:也就是prototype对象。this

好比:Object.prototype      Function.prototype    Person.Prototype
这些都是本文中所说的的prototype对象。复制代码


那三句话是什么呢?spa

1、每一个实例的__proto__指向该实例构造函数的prototype对象。prototype

//栗子1:
function Person(name){
    this.name=name
}
var person1=new Person("nanxin")

//由于person1的构造函数是 Person,因此
person1.__proto__===Person.prototype  //true
复制代码

2、构造函数也属于函数,因此构造函数的__proto__指向Function.prototype。code

//栗子2:
function Person(name){
    this.name=name
}

Person.__proto__===Function.prototype //true


//栗子3:
//Function也是构造函数,是否是超级神奇!
Function.__proto__===Function.prototype   //true
//记住这口诀,你就无敌了!复制代码

3、原型对象本质上也是对象,属于Object的实例,因此原型对象的__proto__指向Object.prototype。(除了Object.prototype.__proto__===null)cdn

//栗子4:
Function.prototype.__proto__===Object.prototype   //true

//栗子5:
function Person(name){
    this.name=name
}
Person.prototype.__proto__===Object.prototype   //true复制代码

最后就是Object.prototype的__proto__指向null。这是特例。对象

Object.prototype.__proto__===null  //true复制代码

说的很精简,可是记住这三句对咱们学习原型链真的颇有帮助!blog

有问题欢迎留言!

相关文章
相关标签/搜索