美文网首页
2020-09-15 封装mixin方法,object.crea

2020-09-15 封装mixin方法,object.crea

作者: SherrinfordL | 来源:发表于2020-09-16 11:12 被阅读0次

    其实就是仿java的interface接口继承

    const mixin = function(obj,mixins){
        const newObj = obj;
    
        newObj.prototype = Object.create(obj.prototype);
    
        for(let prop in mixins){
            if(mixins.hasOwnProperty(prop)){
                newObj.prototype[prop] = mixins[prop];
            }
        }
    
        return newObj;
    }
    
    const BigMixin = {
        fly:()=>{
            console.log('I can fly');
        }
    };
    
    const Big = function(){
        console.log('new big');
    }
    
    const FlyBig = mixin(Big,BigMixin);
    
    const flyBig = new FlyBig();  //=>'new big'
    

    总结区别

    Object.cerate() 必须接收一个对象参数,创建的新对象的原型指向接收的参数对象,new Object() 创建的新对象的原型指向的是 Object.prototype. (前者继承指定对象, 后者继承内置对象Object)

    可以通过Object.create(null) 创建一个干净的对象,也就是没有原型,而 new Object() 创建的对象是 Object的实例,原型永远指向Object.prototype.

    相关文章

      网友评论

          本文标题:2020-09-15 封装mixin方法,object.crea

          本文链接:https://www.haomeiwen.com/subject/zgoxyktx.html