我尝试搜索此内容,并希望它不会显示出我的搜索能力很差,但可能会发现。因为似乎这是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;
   };
 }

08-08 07:03