imr*_*ane 5 javascript dry mixins
我正在组织一个小型企业应用程序,但希望尽可能干.结果,我一直在关注mixin库.
我遇到了这个库并认为这可能是一个不错的选择,因为它允许你在运行时混合进出.此外,我可以只有一个基类(BaseView),只是混合它.
问题
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)
其实我没有正确回答你的问题,但我觉得你的问题没有真正的答案。它与您将要使用的一样真实,实际上不存在“特定于应用程序”的用例。