Js中继承模式

//原型工厂模式
    function extend(target, origin) {
        target.prototype = Object.create(origin.prototype);//此方法创建了一个对象,修改父类原型与子类原型相互独立
        Object.defineProperty(target.prototype, "constructor", {
            value: target,
            enumerable: false
        })
    }


//对象工厂模式 function User(age, name) { this.age = age; this.name = name; } function member(age, name) { let instance = Object.create(User.prototype); User.call(instance, age, name); instance.pri = function () { console.log([age, name]); } return instance; } var queen = member(11, 'Tom');

//通过mixin实现多继承 
    let admin = {
        prtadmin() {
            return "admin";
        }
    }

    let user = {
        __proto__: admin, // mixin的内部继承 
        prtuser() {
            console.log(super.prtadmin() + "user"); //super关键字 = this.__proto__
        }
    };

                // 向函数原型内添加方法的三种方式
    
    // Fun.prototype.user = user.prtuser;
    // Fun.prototype.admin = admin.prtadmin; 该方法可以将添加的方法进行重命名

    // Object.assign(Fun.prototype, admin, user); 使用Object.assign方法会改变原对象

    // Fun.prototype = Object.assign(Fun.prototype, admin, user);
    function Fun() {

    }

    let fun = new Fun();

猜你喜欢

转载自www.cnblogs.com/chuangqianmingyueguang/p/12174672.html