2010-06-30 11 views
1

일부 Java 코드를 Javascript로 변환 중이고 Java 개체에 개체의 두 배열을 채우는 정적 초기화 블록이 있습니다. 내 이니셜 라이저는 얼마나 많은 객체가 만들어 졌는지에 관계없이 한 번만 실행됩니다. Javascript에서 그런 일을 할 수 있습니까?Javascript 개체 - '정적 초기화'

자바 코드 :

public final class MyObject { 

     private MyObject() { } 

     // ... 

    static { 
      // Run once static init code here 
    } 

} 

이 실행되면 스타일의 초기화 자바 스크립트

을 할 수 있습니까?

감사합니다.

+0

어떻게 자바 스크립트에서 클래스를 정의? – Maz

+1

자바 코드를 자바 스크립트로 변환 하시겠습니까? 응? 그들의 유스 케이스는 전혀 다르다. 자바 스크립트가 서브셋 수퍼 셋이나 자바와 교차하지 않는다는 것을 기억하라. 그들은 단지 처음 네 글자를 공유합니다. –

+1

그래, 내가 Java에서 뭔가하고 싶은 자바 용 코드도있다. Javascript에서 클래스는 다음과 같이 정의됩니다. function MyClass() { this.name = ""; } MyClass.prototype.doStuff = 새 함수 (a, b) {...} – Jason

답변

5

아니요.

"정적"멤버의 전체 개념은 실제로 자바 스크립트에 적용되지 않습니다. 당신은 그들을 "공공"방식으로 만 달성 할 수 있습니다.

이런 종류의 것은 사용자가 요구하는 것입니다.하지만 실제로는 "생성자에 의해 트리거되면이 함수를 한 번 실행하는 것"이상의 무리한 구문입니다.

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;