原型链
原型链示意图
使用原型链实现继承
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 指向的对象。这样就形成一套完整的原型链。
网友评论