原型链实现继承

原型链

原型链示意图

image.png

使用原型链实现继承

function People() {
  this.sayhi= function() {
    console.log(this.name+this.age);    
  }
}
function Teacher(name,age) {
  this.name=name;
  this.age = age;
}
Teacher.prototype = new People();

var Ta= new Teacher("java",21);
Ta.sayhi();// java 21



这是怎么回事呢? 原型链在哪?

听我细细道来~

首先 Teacher 实例对象Ta是没有sayhi 这个方法的,在代码执行时,首先会在Teacher 实例对内部寻找这个方法,如果没有找到,会从实例对象的_proto _属性中寻找,这个属性就是Teacher 函数对象的prototype 指向的对象,即声明的People 实例对象。

在这个people 对象中找到了sayhi()方法,将此返回,如果没有找到,于是找proto属性,prototype 指向的对象。这样就形成一套完整的原型链。

你可能感兴趣的:(原型链实现继承)