如何在构造函数中使用静态助手方法(不需要在构造函数中声明它们)

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

本文关键字:构造函数 不需要 声明 方法 静态      更新时间:2023-09-26

我正在学习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]);
    }
}

是可能的/明智的让我自己一个静态助手方法,我可以在我的原型方法和构造函数中使用?

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

我不知道你是什么意思。通过引用类名,您应该能够很好地调用静态方法。下面是一个完整的示例,展示了在另一个类的构造函数中从一个类调用静态方法:

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