我如何在构造函数中使用静态辅助方法(不在那里声明它们)?

How can I use static helper methods in the constructor (without declaring them there)?

我正在学习 ES6 classes。有没有办法让构造函数可以访问辅助函数(例如用于数据处理),但也可以在其他地方访问,这样我就不会两次输入函数(作为构造函数中的 IIFE 和静态 class 方法也)?

例如,目前我正在做的是因为 getDimensions 在构造函数中不可调用:

class Foo {

    constructor(data){
        this._data = data;
        let dimensions = function(data){
            //return some dimensions
        }(data);
        this._x = d3.scaleLinear().domain([dimensions])...
    }

    static getDimensions(someData){
        //same calcs as the constructor IIFE
    }

    updateScale(newData){
        let dimensions = getDimensions(newData);
        this.x = d3.scaleLinear().domain([dimensions]);
    }
}

是否 possible/sensible 为自己获取一个可以在我的原型方法和构造函数中使用的静态辅助方法?

getDimensions 是静态方法,因此您必须将其作为 Foo 对象的 属性 来访问。而不是 getDimensions(newData) 你应该做 Foo.getDimensions(newData).

不确定你的意思。您应该能够通过引用 class 名称来调用静态方法。这是一个完整的示例,显示了在另一个 class 的构造函数中从一个 class 调用静态方法:

<html>
   <head>
      <script type="text/javascript" src="http://code.jquery.com/jquery-3.1.1.min.js"></script>
      <script type="text/javascript">
         class Defines {
            static StaticMethod(data) {
               $("#someDiv").append("static method " + data);
            }
         }

         class SomethingConcrete {
            constructor (data) {
               this.data = data;
               Defines.StaticMethod(this.data);
            }
         }

         $(function () {
            const somethingConcrete = new SomethingConcrete(3);
         });
      </script>
   </head>
   <body>
      <div id="someDiv">
      </div>
   </body>
</html>

输出:"static method 3"