2012-02-14 3 views
2

Javascriptに関する質問です。
パターンや表現については、重複する質問があります。jsオブジェクトを宣言して取得する最善の方法は何ですか? (模様)

以下の3つを使用してオブジェクトを取得できます。 結果オブジェクトは同じです。

重いjavascript Webアプリケーションを使用すると、どのパターンが最適ですか?順番に


1.オブジェクトリテラルの場合
2.閉鎖ケース
3.新しいケースとanonymouse機能

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

ない "最高" の方法はありません。 JavaScriptにはいくつかのOOPパターンがあり、あなたが言及したものはその1つ(そして一般的なもの)です。基本的には、プライベートクラスベースの静的変数をカプセル化するためのクロージャーを備えたプロトタイプ(または擬似クラシック)パターンです。

他のパターン(たとえば、Douglas Crockfordが推奨する機能パターン)があります。

私は個人的に擬似古典的なパターンを推奨します(どのパターンが最適かは議論の熱い領域です)。

あなたはJavaScriptでOOPを行っている場合、私はあなたがOOPは、このようなDojo ToolkitClosure Libraryとして、内蔵しているJavaScriptライブラリを採用に見えることを強くお勧めします。他のライブラリ(例:jQuery、MOOtools、Extなど)はすべてOOPモジュールおよび/またはプラグインを持っています。

それとも

はJavaScriptにはクラスはありませんが、コンストラクタとプロトタイプがあります。これらの概念は、類似した複数のオブジェクト(ユーザーリストに含まれるユーザーなど)がある場合に便利です。コードサンプルでは、​​これらの概念の両方を使用しています。 myclassのような名前を使うと、あなたがモデル化しようとしていることを伝えるのが難しいです。 Userコンストラクタとプロトタイプの拡張の例を次に示します。

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

User.prototype.sayHello = function() { 
    return "Hello, my name is " + this.name; 
}; 
関連する問題