首先:图上的三列分别表示实例、构造函数、原型对象。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
有问题欢迎留言!