javascript:继承

  • 混入式继承

    通过一个函数遍历b对象自身属性和方法来添加到a对象上

    var a = {y: 1};
    var b = {
        a: 1,
        b: 2,
        c: function(){
            console.log("c");
        }
    }
    a.extend = function(obj){
        for(var k in obj){
            if(obj.hasOwnProperty(k)){
                this[k] = obj[k];
            }
        }
    };
    a.extend(b);
    
  • 原型链继承(用的原型替换)

    通过原型替换的方法 添加b对象的属性、方法

    function Aa(){
        this.y = 1
    };
    var b = {
        a: 1,
        b: 2,
        c: function(){
            console.log("c");
        }
    }
    var a = new Aa();
    a.prototype = {
        constructor = Aa; //替换原型需要填加上constructor属性
        a: 1,
        b: 2,
        c: function(){
            console.log("c");
        }
    }
    
  • 混入+原型链继承

    function Aa(){
        this.y = 1
    };
    var b = {
        a: 1,
        b: 2,
        c: function(){
            console.log("c");
        }
    }
    Aa.prototype.extend = function(obj){
        for(var k in obj){
            if(obj.hasOwnProperty(k)){
                this[k] = obj[k];
            }
        }
    }
    var a = new Aa();
    
    a.extend(b); //这个是添加到实例化a的身上继承
    Aa.prototype.extend(b); //这个是添加到Aa的原型身上继承
    
  • 经典继承

    Object.create()

    语法:var newO = Object.create(obj);

    作用: 创建一个新的以obj为原型的对象并返回。

posted @ 2021-03-09 11:16  镜像山海  阅读(48)  评论(0)    收藏  举报