Mixins

作者: SingleDiego | 来源:发表于2019-06-24 16:25 被阅读0次

    我们使用 assign 方法把多个对象的成员复制给某个对象:

    const canEat = {
      eat: function() {
        this.hunger --;
        console.log('eating, hunger: ' + this.hunger);
      }
    };
    
    const canWalk = {
      walk: function() {
        console.log('walking');
      }
    };
    
    const person = Object.assign({hunger: 10}, canEat, canWalk);
    

    这里我们把 canEatcanWalk 的所有对象成员复制给了 person,使得它拥有了上面两个对象的属性和方法。

    person.walk()
    // walking
    
    person.eat()
    // eating, hunger: 9
    




    这个方法也可以用在构造函数上,我们把构造函数的 prototype 作为参数传递给 assign 函数。

    const canEat = {
      eat: function() {
        this.hunger --;
        console.log('eating, hunger: ' + this.hunger);
      }
    };
    
    const canWalk = {
      walk: function() {
        console.log('walking');
      }
    };
    
    function Person() {
      this.hunger = 10;
    };
    
    Object.assign(Person.prototype, canEat, canWalk);
    
    const person = new Person()
    

    测试:

    person.eat()
    // eating, hunger: 9
    




    我们把组合的方法用函数包装一下:

    function mixins(target, ...sources) {
      Object.assign(target.prototype, ...sources);
    };
    

    这里我们使用 Javascript 的 剩余参数语法(rest),来处理不定数量的参数。

    相关文章

      网友评论

          本文标题:Mixins

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