2012-06-05 2 views
2

가능한 중복 :
Static variables in JavaScript정적 자기 멤버

이 어떻게 자바 스크립트에서 자기 회원들과 정적 인 캡슐 레이션을 만들 수 있습니까? PHP와 같이 : 자바 스크립트

class bar{ 
     static public $foo; 
     static public function set() { 
      self::$foo = 'a'; 
     } 
} 
bar::set(); 

: VAR 바 = 함수() { ???????? } bar.set();

감사합니다.

+1

이것은 자바 스크립트처럼 보이지 않습니다. – sed

+2

@Qmal 이것은 정확히 OP가 말한 것입니다 : "여기에 몇 가지 PHP 코드, 어떻게 자바 스크립트에서 동일한 작업을 수행할까요?" –

+0

@FlorianMargaine 나쁘다 – sed

답변

2

단순히 속성을 bar으로 정의하십시오.

var bar = function() { 
    // Private instance variables 
    var a = 1; 
    // Public instance variables 
    this.b = 5; 
    // Privileged instance methods 
    this.c = function() { 
     return a; 
    } 
}; 
// Public instance methods 
bar.prototype.d = function() { 
    return ++this.b; 
} 

// Public static variables 
bar.foo = null; 
// Public static methods 
bar.set = function() { 
    bar.foo = "a"; 
} 
+0

방금 ​​[복제] (http://stackoverflow.com/a/1535687/851498)를 복사했습니다. 응답하지 말고 투표하십시오. 불필요한 중복을 피하십시오. –

+0

@FlorianMargaine 귀하의 의견을 게시하기 전에이 글을 쓰기 시작했습니다. 네 말이 맞아, 이건 중복 된거야. –

+0

내 잘못이야 :-) 내 첫 코멘트는 여전히 적용됩니다. –

0

는 객체를 생성하고 반환하는 폐쇄합니다

bar.foo = null; 
bar.set = function() { 
    bar.foo = "a"; 
} 

는 여기에 좋은 개요입니다. 클로저 내부에서 로컬 변수를 선언 할 수 있습니다. 범위는 비공개입니다.

var bar = (function(){ 

    var foo; 

    return { 
    set: function(){ 
     foo = 'a'; 
    } 
    }; 

})(); 

bar.set(); 
+0

그리고 ... 'new bar()'는 무엇을 제공합니까? OP는 개인/공개 변수를 만드는 방법이 아니라 클래스와 비슷한 솔루션을 원한다고 생각합니다. –

+0

@FlorianMargaine : Aaaaannd ... 'bar'는 기능이 아니기 때문에 분명히 아무것도 없습니다. 질문에서의 사용법은 OP가 객체로 사용될 수있는 것을 원한다는 것을 보여 주며, 이것은 또한 생성자 로서도 작동해야한다고 제안한다. – Guffa

+0

"정적"용어는 일반적으로 다음과 같은 의미입니다. 인스턴스화 할 수있는 클래스에 정의 된 정적 메서드를 사용하십시오. 나는 당신의 대답이 그 자리를 차지하고 있다고 생각합니다. –