原型(prototype)、原型链和原型继承关系
继承 经典继承/混合继承 /组合式继承
一、
当B构造函数继承A构造函数的时候,
在B构造函数中 借用父构造函数继承父构造函数的属性 代码:A.call(this,参数)
二、
通过 B构造函数的.prototype.方法名=A构造函数.prototype.方法名 来继承原型上的方法
原型:prototype
在构造函数的原型上,添加一个方法,
通过这个构造函数创建出来的对象,都共用原型上的方法 (一个say方)
function A(name,age){
this.name = name;
this.age = age;
}
// 让所有 用A构造函数创建出来的对象 都共用原型上的方法 (一个say方) 原型:
A.prototype.say =function(){
console.log(this.name,this.age)
}
function B(name,age,gender){
var gender = gender;
// 借用父构造函数 继承父构造函数的属性
A.call(this,name,age);
}
B.prototype.say = A.prototype.say;
var b = new B('张三',20);
b.say();
网站打印的结果如下图,
继承的知识点与其说是对象的继承,更像是函数的功能用法,如何用函数做到复用,组合,这些和使用继承的思考是一样的。
继承模式的学习重点是学它们的思想,原型式继承它用函数复制了内部对象的一个副本,这样不仅可以继承内部对象的属性,还能把函数(对象,来源内部对象的返回)随意调用,给它们添加属性,改个参数就可以改变原型对象,而这些新增的属性也不会相互影响。