Mixin模式

Mixin 有助于减少系统中的重复功能及增加函数复用。Mixin通过将功能注入到对象原型中轻松实现功能共享,但这也导致了原型污染和函数起源方面的不确定性。下面看一个简单Minxin模式的例子:

var Hero = (function () {
  this.forward = function () {
    console.log('前进: 1米');
  };
  this.backward = function () {
    console.log('后退: 1');
  };
  this.attack = function () {
    console.log('普通攻击');
  }
  return function() {
    this.forward = forward;
    this.backward = backward;
    this.attack = attack;
    return this;
  }
})();

var DeMarciaPrince = function (name) {
  this.name = name;
  Hero.call(DeMarciaPrince.prototype);
}


var deMarciaPrince = new DeMarciaPrince('嘉文四世');

console.log(deMarciaPrince.name)
deMarciaPrince.forward();
deMarciaPrince.attack();

以上通过Hero.call(DeMarciaPrince.prototype),在DeMarciaPrince注入了Hero的所有方法和属性。Hero里的方法是每个英雄最基本的方法,所以当我们创建新英雄的时候就可以通过Mixin方式实现代码复用。我们通过闭包实现Hero,避免每次调用的时候都重新定义相同功能的代码。

你可能感兴趣的:(Mixin模式)