2010-06-30 2 views
1

Я конвертирую некоторый Java-код в Javascript, а объект Java имеет блок статической инициализации, который заполняет два массива в объекте. Я понимаю, что этот инициализатор работает только один раз независимо от того, сколько объектов создано. Могу ли я сделать такое в Javascript?Javascript Object - 'Статическая инициализация'

код Java:

public final class MyObject { 

     private MyObject() { } 

     // ... 

    static { 
      // Run once static init code here 
    } 

} 

Может этот запуск однократной инициализации стиля можно сделать в JavaScript?

Thanks

+0

Как вы определения классов в JavaScript? – Maz

+1

Преобразование Java-кода в JavaScript? да? Их варианты использования совершенно разные ... помните, что JavaScript не является подмножеством подмножества или даже пересекается с java. они просто разделяют первые 4 буквы. –

+1

Хорошо, у меня есть код для чего-то в Java, который я хотел бы также сделать в Javascript. В Javascript мой класс определяется следующим образом: function MyClass() { this.name = ""; } MyClass.prototype.doStuff = новая функция (a, b) {...} – Jason

ответ

5

Не совсем.

Вся концепция «статических» элементов на самом деле не применяется к 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, хорошо ли это решение взаимодействует с рабочими/потоками? – Pacerier

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; 
Смежные вопросы