如何在Javascript中正确使用mixins

imr*_*ane 5 javascript dry mixins

我正在组织一个小型企业应用程序,但希望尽可能干.结果,我一直在关注mixin库.

我遇到了这个并认为这可能是一个不错的选择,因为它允许你在运行时混合进出.此外,我可以只有一个基类(BaseView),只是混合它.

问题

  1. 什么是有用的Mixins的实际应用示例?(请不要再抽象例子)
  2. 我是否甚至需要扩展类,或者我可以使用此库来管理所有扩展和mixins?

jAn*_*ndy 3

mixin只是一个不同的概念想法,关于如何组织代码和继承您当然可以将它与使用经典继承原型继承结合起来,但可以这么说,它也可以独立工作。

例如,我们不是创建“委托”对象属性/查找(如原型继承),而是真正从多个其他对象“形成”新的独立对象。有时这也称为“多重继承”,并且仅通过 Javascript原型继承无法轻松实现。

举个例子:

var pianist = {
   play: function() {}
};

var programmner: {
   code: function() {}
};
Run Code Online (Sandbox Code Playgroud)

现在我们可以创建另一个Object,比如

var Jim = Object.create( null ); // create a fully self-defining object

extend( Jim, pianist );
extend( Jim, programmer );
Run Code Online (Sandbox Code Playgroud)

这个伪extend方法可能看起来像(ES5):

function extend( target, source ) {
    Object.getOwnPropertyNames( source ).forEach(function( key ) {
        Object.defineProperty( target, key, Object.getOwnPropertyDescriptor(source, key)) });

    return target
}
Run Code Online (Sandbox Code Playgroud)

其实我没有正确回答你的问题,但我觉得你的问题没有真正的答案。它与您将要使用的一样真实,实际上不存在“特定于应用程序”的用例。