Javascript对象 - '静态初始化'

问题描述:

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

Java代码:

public final class MyObject { 

     private MyObject() { } 

     // ... 

    static { 
      // Run once static init code here 
    } 

} 

可这一次运行风格初始化时在Javascript中做了什么?

谢谢

+0

你是如何定义的JavaScript类? – Maz 2010-06-30 19:25:13

+1

将Java代码转换为JavaScript?是吧?他们的用例是完全不同的......记住JavaScript不是超集的子集,甚至不是与java的相交。他们只是分享前4个字母。 – 2010-06-30 19:27:09

+1

好吧,我有一些Java代码,我想在Javascript中也做。在Javascript中,我的类定义如下: function MyClass(){ this.name =“”; } MyClass.prototype.doStuff = new function(a,b){...} – Jason 2010-06-30 19:30:50

不是真的。

“静态”成员的整体概念并不适用于JavaScript。你可以实现它们,但只能以“公共”方式实现。

这种做你所要求的,但它实际上只是一堆kludgy语法“一次运行该函数由构造函数触发”。

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

    MyObject.__initialized = true; 
    } 

    // Proceed with constructing instance of MyObject 
} 

new MyObject(); 
new MyObject(); 
+0

@Peter,这个解决方案是否与worker/threads很好地交互? – Pacerier 2014-06-24 23:07:17

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