一、原型继承的概念
原型继承是指通过构造函数的原型属性来实现对象间的继承关系。我们将子构造函数的原型设为父构造函数的实例对象。这样父构造函数的方法和实例都可以让子构造函数的实例对象能够使用。
二、原型继承的实现方法
我们可以将子函数的原型指向父函数的实例对象,形成一种嵌套。例子如下:
function Person() {
this.ears = 2
this.eat = function () {
console.log('eating')
}
this.hobby = ['reading', 'running']
}
function Student(name, age) {
this.name = name
this.age = age
}
// 让Student的原型指向person
Student.prototype = new Person()
Student.prototype.study = function () {
console.log('study hard!!!')
}
在上面的例子中,通过Student构造函数的prototype属性访问Student原型,然后再将原型指向Person的一个实例化对象。这样子函数的实例化对象就可以使用父函数的方法了。
三、实现原理
在JS中,每个对象都有一个指向其原型对象的链接,即__proto__
属性。当访问一个对象的属性时,JS引擎会先查找对象本身是否有该属性,如果没有,则会沿着对象的原型链一直查找,直到找到该属性或者到达原型链的尽头。