js中的继承
继承分为很多种,在这里我们例举几个常用的。
常用的继承有,call继承,class类继承,原型继承。call+原型混合继承
概念:
继承简单来说就是让子类继承父类的属性或者方法。
我们常用的继承有四种,分别是,call继承,原型继承,class类继承,call+原型混合继。
1.call继承是在子类中调用call方法,修改this指向,让this指向父类的属性和方法,这样
就可以在子类访问父类的属性和方法,但是call有个缺点,就是不能继承原型上的属性和方法
2.原型继承就是将父类的实例放在子类的原型上,这样就可以通过子类实例去继承父类的属性
和方法,缺点就是原型实例的父类祖先原型改变,实例就会改变。
3.混合继承就是call+原型继承,混合继承的缺点就是被父类调用两次,浪费资源。
4.class继承的关键字是extends,子类通过extends来继承父类的属性和方法,子类通过sup
er关键字,访问父类的属性方法,super必须在子类this之前去调用,添加方法的话可以在
constructor下面直接调用
//怎么读?
constructor//肯四chua可特
extends//艾克斯淡四
call//靠
// 原型继承
// 构造函数一。
function Fn(name, age) {
this.name = name,
this.age = age,
this.asHi=function(){
console.log('666');
}
}
// 给Fn函数添加aaa方法
Fn.prototype.aaa = function () {
console.log('哈哈哈');
}
// 创建新的构造函数
function Proson(sex){
this.sex=sex
}
// 将fn函数通过new挂载到Proson这个原型上 给fn方法传递数据
Proson.prototype=new Fn('ddd',18)
// 通过new调用它,并给子类传递实参
var p = new Proson('男')
p.asHi()//访问它的方法
console.log(p.name);//访问它的属性
console.log(p.sex);
p.aaa()//调用添加的原型上的方法