我尝试搜索此内容,希望问到这并不能揭示我的搜索技能差,但可能可以。因为似乎这是Javascript的基本技能。
如何向Crossfilter添加新功能?我可以将其添加到Crossfilter对象的“实例”中,但是我不知道如何将其添加到“类”中。 (我知道这不是一堂课。)
这有效
var xf = crossfilter(data);
xf.myFunction = _ => ...
但是我更喜欢这样做(尽管我知道,因为Crossfilter不是一个类,所以它不起作用),因此它不是特定于单个对象,而是我创建的所有Crossfilter对象。
Crossfilter.prototype.myFunction = ...
我认为有关jQuery插件的几篇文章可以帮助我调整答案,但似乎并没有吸引我,因为这(似乎)是jQuery的功能,而不是JavaScript的功能。
答案 0 :(得分:3)
实际上,交叉过滤器既不是类,也不使用原型继承:
function crossfilter() {
var crossfilter = {
add: add,
remove: removeData,
dimension: dimension,
groupAll: groupAll,
size: size
};
//...
return crossfilter;
}
因此,这里没有办法使用继承。要将该方法添加到所有实例中,您必须猴子修补工厂:
{
const oldCrossfilter = crossfilter;
crossfilter = function(...args) {
const instance = oldCrossfilter(...args);
instance.myFunction = _ => _;
return instance;
};
}