Javascript对象 - '静态初始化'

时间:2010-06-30 19:21:20

标签: javascript

我正在将一些Java代码转换为Javascript,Java对象有一个静态初始化块,用于填充对象中的两个数组。我的理解是,无论创建了多少个对象,这个初始化程序只运行一次。我可以在Javascript中做这样的事情吗?

Java代码:

    public final class MyObject {

        private MyObject() { }

        // ...

    static {
             // Run once static init code here
    }

}

这种一次性运行样式初始化可以在Javascript中完成吗?

由于

3 个答案:

答案 0 :(得分:5)

不是真的。

“静态”成员的整个概念并不真正适用于javascript。你可以通过“公共”的方式实现它们。

这样做可以满足您的需求,但它实际上只是“由构造函数触发一次运行此函数”的一堆语法。

function MyObject()
{
  if ( 'undefined' == typeof MyObject.__initialized )
  {
    // static stuff
    alert( 'hi' );

    MyObject.__initialized = true;
  }

  // Proceed with constructing instance of MyObject
}

new MyObject();
new MyObject();

答案 1 :(得分:3)

// Object Contructor
function MyObject(name) {

  if (!this.done) {
    this.done = true;
    // init stuff
    // ...
  }

  this.name = name;
  return this; // optional
}

// available in all instances
MyObject.prototype.done = false;

答案 2 :(得分:3)

是的,ES6类有一些技巧。

class MyClass {

    static #unused = MyClass.#init();

    static #init() {
        // Your initialization logic
    }
}