Mik*_*gin 5 javascript ecmascript-6
使用标准 es5 我有这个方法,它允许我将方法添加到我的库的原型链中(它允许扩展核心库以及附加到库的任何组件):
library.extend = function(extendId, extendObj) {
//if it's an extension of the core library object...
if(extendId === 'library') {
library.prototype[extendObj.name] = extendObj.func;
} else {
library.component[extendId].prototype[extendObj.name] = extendObj;
}
};
Run Code Online (Sandbox Code Playgroud)
用法是:
/* create some new class */
var somecomponent = function() {}
somecomponent.protoype.somemethod = function() {}
/* extend the base libraries prototype chain with the new class*/
library.extend('library', somecomponent)
Run Code Online (Sandbox Code Playgroud)
在 es6 类中,我们也有原型,但它们被类语法屏蔽,您应该使用该方法向类添加方法extends
。
因此,我不确定如何使用与上面类似的方法以编程方式向 es6 类添加方法。
在 es6 类中,我们也有原型,但它们被类语法屏蔽,您应该使用关键字向类添加方法
extends
。
我不确定你所说的“蒙面”是什么意思。是的,它的语法不同,但结果完全相同 -class
创建一个带有属性的构造函数.prototype
。因此,虽然extends
语法当然更容易编写,但您不能以编程方式使用它。请注意,它extends
用于子类化,而不是用于现有类的扩展,因此它无论如何都不适合您的需要。
我不确定如何使用与上面类似的方法以编程方式向 ES6 类添加方法。
只需继续使用您已有的方法即可。以这种风格进行 mixin 是完全可以的。
归档时间: |
|
查看次数: |
2859 次 |
最近记录: |