js中的继承

124 阅读2分钟

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()//调用添加的原型上的方法

image.png