借用继承
先说一下它是通过call来实现的.
在这里得介绍一下this :
- this 在普通函数中指向的事widow;
- this 指向谁,要看函数的调用者是谁;
- 在构造函数中this指的是当前创建对象;
// 创建父类构造函数
function Person(name, age){
this.name = name;
this.age = age;
};
// 父类构造函数原型
Person.prototype.a = function(){
console.log('你好!');
};
// 创建子类构造函数
function Student(name, age){
// this 值得是当前的创建对象
Person.call(this, name, age);
};
// 创建对象
var stu1 = new Student('张三', 15);
在上面的代码段中:
Person.call (this, name, age) ;
通过这个方法来实现继承:
函数名.call (调用者, 实参, 实参);
总结一下:
- 优点:完美的继承属性
- 问题:调用父类的方法时,无法调用 / 会在浏览器报错
- 原因:找不到,因为没有更改子类的原型
- 解决办法:通过组合继承来实现(原型 + 借用)