이 어떻게 자바 스크립트에서 자기 회원들과 정적 인 캡슐 레이션을 만들 수 있습니까? PHP와 같이 : 자바 스크립트
class bar{
static public $foo;
static public function set() {
self::$foo = 'a';
}
}
bar::set();
: VAR 바 = 함수() { ???????? } bar.set();
감사합니다.
이 어떻게 자바 스크립트에서 자기 회원들과 정적 인 캡슐 레이션을 만들 수 있습니까? PHP와 같이 : 자바 스크립트
class bar{
static public $foo;
static public function set() {
self::$foo = 'a';
}
}
bar::set();
: VAR 바 = 함수() { ???????? } bar.set();
감사합니다.
단순히 속성을 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";
}
방금 [복제] (http://stackoverflow.com/a/1535687/851498)를 복사했습니다. 응답하지 말고 투표하십시오. 불필요한 중복을 피하십시오. –
@FlorianMargaine 귀하의 의견을 게시하기 전에이 글을 쓰기 시작했습니다. 네 말이 맞아, 이건 중복 된거야. –
내 잘못이야 :-) 내 첫 코멘트는 여전히 적용됩니다. –
는 객체를 생성하고 반환하는 폐쇄합니다
bar.foo = null;
bar.set = function() {
bar.foo = "a";
}
는 여기에 좋은 개요입니다. 클로저 내부에서 로컬 변수를 선언 할 수 있습니다. 범위는 비공개입니다.
var bar = (function(){
var foo;
return {
set: function(){
foo = 'a';
}
};
})();
bar.set();
그리고 ... 'new bar()'는 무엇을 제공합니까? OP는 개인/공개 변수를 만드는 방법이 아니라 클래스와 비슷한 솔루션을 원한다고 생각합니다. –
@FlorianMargaine : Aaaaannd ... 'bar'는 기능이 아니기 때문에 분명히 아무것도 없습니다. 질문에서의 사용법은 OP가 객체로 사용될 수있는 것을 원한다는 것을 보여 주며, 이것은 또한 생성자 로서도 작동해야한다고 제안한다. – Guffa
"정적"용어는 일반적으로 다음과 같은 의미입니다. 인스턴스화 할 수있는 클래스에 정의 된 정적 메서드를 사용하십시오. 나는 당신의 대답이 그 자리를 차지하고 있다고 생각합니다. –
이것은 자바 스크립트처럼 보이지 않습니다. – sed
@Qmal 이것은 정확히 OP가 말한 것입니다 : "여기에 몇 가지 PHP 코드, 어떻게 자바 스크립트에서 동일한 작업을 수행할까요?" –
@FlorianMargaine 나쁘다 – sed