JavaScript中的继承——构造继承。

构造继承

使用父类的构造函数来增强子类。复制父类的构造属性给子类 (父类的原型复制不到)

 //动物类
    function Animal(name, sex) {
    
    
        this.name = name || 'Animal';
        this.sex = sex || '未知';
        this.sleep = function () {
    
    
            console.log(this.name + "在睡觉!");
        }
    }
    //添加原型属性和方法
    Animal.prototype = {
    
    
        eat: function () {
    
    
            console.log(this.name + "在吃饭!");
        },
        play: function () {
    
    
            console.log(this.name + "在玩!");
        }
    }

    //科目类
    function Type(type) {
    
    
        this.type = type || '类型';
    }
    Type.prototype.paTree = function (args) {
    
    
        console.log(args);
    }

    function Cat(name, sex, type) {
    
    
        Animal.call(this, name, sex);
        Type.call(this, type);
    }
     var cat = new Cat('小黑', '公', '猫科');
    cat.sleep();
    console.log(cat);
    //子类的实例是本身
    console.log(cat instanceof  Cat);//true
    console.log(cat instanceof  Animal);//false
    console.log(cat instanceof  Type);//false

特点
创建子类的时候可以向父类传递参数。
可以实现多继承。

缺点
子类对象的实例是本身,不是父类。
只能继承父类的构造属性和方法,不能继承原型属性和方法。
不是完全的继承,类似克隆,父类的副本,影响性能。

猜你喜欢

转载自blog.csdn.net/weixin_46953330/article/details/118636196