原型链prototype
什么是原型链,顾名思义,原型链是一条函数原型对象组成的调用链条。JS中每一个函数都有一个原型对象,当实例对象中读取自己的属性或调用方法时找不到该属性和方法时,此时会通过与之关联的prototype原型对象来继续查找,JS利用这个特性模拟“继承”。
function Parent() {
this.name = '基类';
}
Parent.prototype.study = function () {
console.log('开始学习啦')
}
var child = new Parent()
child.study();
这里在构造函数中是没有定义study的,所以实例对象本身也没有study方法,但是这里依然可以调用study方法,因为这里与它关联的原型对象中定义了study方法
指向prototype的__proto__
既然prototype指向了构造函数的原型对象,那跟我们实例对象有什么关系?
function Parent() {
this.name = '基类';
}
Parent.prototype.study = function () {
console.log('开始学习啦')
}
var child = new Parent()
child.study();
console.log(child.__proto__ === Parent.prototype); // true
实例对象有个__proto__属性指向了构造函数的prototype,也就是原型对象ÿ