2012-02-14 4 views
2

자바 스크립트 관련 질문.
패턴 또는 표현식에 대해 중복 된 질문 일 수 있습니다.js 객체를 선언하고 가져 오는 가장 좋은 방법은 무엇입니까? (무늬)

아래의 세 가지를 사용하여 개체를 얻을 수 있습니다. 결과 개체가 동일하게 작동합니다.

무거운 자바 스크립트 웹 응용 프로그램을 사용할 때 가장 좋은 패턴은 무엇입니까? 순서

, 새로운 사건

function car = { 
    name: 'Q5', 
    type:'SUV', 
    wheels:4, 
    door:2, 
    score: 0, 

    getWheel: function(){return this.wheels;}, 
    getDoor: function(){return this.door;}, 
    setScore: function(score){ this.score = score;} 
} 




var car = (function(){ 
    var name = 'Q5', 
    type ='SUV', 
    wheels = 4, 
    door = 2, 
    score = 0; 

    return { 
    getWheel: function(){return wheels}, 
    getDoor: function(){return door}, 
    setScore: function(_score){ score = _score;} 
    } 
})(); 



var car = new function(){ 
    var name = 'Q5', 
    type ='SUV', 
    wheels = 4, 
    door = 2, 
    score = 0; 

    this.getWheel = function(){return wheels} 
    this.getDoor = function(){return door} 
    this.setScore = function(_score){ score = _score;}  
} 

답변

2

에는 "최고"방법은 없습니다와
1. 객체 리터럴 경우
2. 폐쇄의 경우
3. anonymouse 기능. 자바 스크립트에는 몇 가지 OOP 패턴이 있으며 언급 한 것은 OOP 패턴 중 하나입니다 (또한 널리 사용되는 패턴 중 하나). 기본적으로 private 클래스 기반의 정적 변수를 캡슐화하는 클로저가있는 프로토 타입 (또는 유사 - 클래식) 패턴입니다.

다른 패턴 (예 : Douglas Crockford가 권장하는 기능 패턴)이 있습니다.

저는 개인적으로 고전적인 패턴을 권장합니다 (어떤 패턴이 가장 좋은지는 논쟁의 여지가 많지만).

당신이 자바 스크립트 OOP를 수행하는 경우, 난 강력하게는 OOP가 같은 Dojo Toolkit 또는 Closure Library로, 내장되어있는 자바 스크립트 라이브러리를 채택 들여다 것이 좋습니다 . 다른 라이브러리 (예 : jQuery, MOOtools, Ext 등)에는 모두 OOP 모듈 및/또는 플러그인이 있습니다.

또는

자바 스크립트에는 클래스가 없지만는, 생성자와 프로토 타입이 있습니다. 이러한 개념은 여러 객체가 유사한 경우 유용합니다 (예 : 사용자 목록에 포함 된 사용자). 코드 샘플은이 두 가지 개념을 모두 사용합니다. myclass와 같은 이름을 사용하면 모델링하려고하는 것을 말하기 어렵습니다. 다음은 User 생성자 및 프로토 타입에 대한 확장의 예입니다.

var User = function (name) { 
    this.name = name; 
}; 

User.prototype.sayHello = function() { 
    return "Hello, my name is " + this.name; 
}; 
관련 문제