2012-02-14 54 views
2

Javascript的問題。
關於模式或表達,可能是重複的問題。聲明和獲取js對象的最佳方式是什麼? (圖案)

您可以在下面使用其中的三個獲取對象。 結果對象工作原理相同。

當您使用沉重的JavaScript web應用程序時,哪種模式最好?

爲了,
1.對象文字的情況下
2.關閉情況下
3.新情況

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

沒有 「最好」 的方式anonymouse功能。 JavaScript中有一些OOP模式,你提到的是其中的一種(也是一種流行的模式)。它本質上是一個典型的(或僞古典)模式,用封閉來封裝基於私有類的靜態變量。

還有其他模式(例如Douglas Crockford推薦的功能模式)。

我個人推薦僞古典模式(儘管哪種模式最好是辯論的熱點領域)。

如果你是用JavaScript實現面向對象編程,我強烈建議您考慮採用具有OOP內置的,如該Dojo ToolkitClosure Library JavaScript庫。其他庫(例如jQuery,MOOtools,Ext等)都有OOP模塊和/或插件。

或者

雖然有在JavaScript中沒有類,也有構造函數和原型。當你有幾個相似的對象時(例如用戶列表中的用戶),這些概念就派上用場了。您的代碼示例使用了這兩個概念。使用像myclass這樣的名字,很難說出你想要建模的東西。下面是一個用戶構造函數的例子,以及它對原型的擴展:

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

User.prototype.sayHello = function() { 
    return "Hello, my name is " + this.name; 
}; 
相關問題