对象的继承
1.继承的思想:关键是将一个构造函数A的原型指向给另一个构造函数B的实例本身,那么A实例将拥有(继承)B实例的所有的属性和方法(继承在原型);
2.原理:将一个构造函数A的原型指向给另一个构造函数B的实例本身,也就意味着A原型将继承B实例本身拥有的所有的属性和方法;而对于A实例而言,A原型对象中的所有的属性和方法是A实例所共享的,也就是说A实例所共享的实例和方法就是B实例本身所拥有的一切属性和方法,这就好像A实例继承了B实例的属性和方法一样。
3.继承的一些常用的实现方法:
3.1.组合继承(最常用的继承方法)
这里所谓的”组合“就是原型链和构造函数的技术整合到一起,分别发挥各自的优势:具体思想是:通过原型链继承原型上的属性和方法,通过借用构造函数实现对实例属性的继承。(想方设法将被继承者的实例属性”写“到继承者的实例属性值中去,这就用到了call(apply))
function SuperType(name) {
this.name = name;
this.colors = ["red", "blue", "green"];
}
SuperType.prototype.sayName = function () {
console.log(this.name);
}
function SubType(name, age) {
//继承属性(实例属性)
// 在当前环境中执行了函数SuperType(name),
//相当于再这里写了一下代码:this.name = name;this.colors = ["red","blue","green"];
SuperType.call(this, name);