0

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

例如,目前我正在做,因为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]);
    }
}

是否有可能/明智地为自己获得一个可以在原型方法和构造函数中使用的静态辅助方法?

4

2 回答 2

2

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

于 2016-10-10T19:06:00.413 回答
1

不明白你的意思。您应该能够通过引用类名来调用静态方法。下面是一个完整的示例,展示了在另一个类的构造函数中从一个类调用静态方法:

<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>

输出:“静态方法 3”

于 2016-10-10T19:14:32.957 回答