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