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),来处理不定数量的参数。

相关文章

  • less

    Variables Extend Mixins Parametric Mixins Mixins as Funct...

  • Vue 混入(mixins和Vue.mixin)

    1.mixins和Vue.mixin mixins 混入 (mixins) 是一种分发 Vue 组件中可复用功能的...

  • Dart中的新特性(Mixins)

    什么是Mixins?Mixins的中文意思是混入,即在一个类中混入其他类。首先我们需要知道,Mixins不是接口,...

  • 很棒的文章 swift 协议 、继承的分析.

    Mixins 比继承更好[https://swift.gg/2015/12/15/mixins-over-inhe...

  • Vue 之 Mixins (混入)

    Mixins Mixins是一种分发Vue组件中可复用功能的非常灵活的一种方式。 什么时候使用Mixins 页面的...

  • vue + mixins 使用实例

    mixins可写入的模块 mixins可写入组件export default 中的所有内容。data , meth...

  • mixins

    mixins 混合 (mixins) 是一种分发 Vue[https://www.baidu.com/s?wd=V...

  • mixins

    文章来源Mixins这个词来源于"mixing in"。表示在一个规则集(rule-set)中的一堆属性包含在另一...

  • Mixins

    我们使用 assign 方法把多个对象的成员复制给某个对象: 这里我们把 canEat 和 canWalk 的所...

  • mixins

    mixins就是定义一部分公共的方法或者计算属性,然后混入到各个组件中使用,方便管理与统一修改

网友评论

      本文标题:Mixins

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