2012-09-28 64 views
0

我是一位新手程序員,但我已經看到了一些可以做得更好或者至少有所不同的事情。例如,類是可用來創建新的對象,像這樣:使用類而不是使用將對象作爲返回值的函數的優點是什麼?

var newObject = new className(params); 

但是這真的有必要,因爲函數可以返回一個對象?我的意思是,用下面的代碼,你可以和擺脫關鍵字:

var newFruit = function (confobj) { 
    var instance = {}; 

    //Common to all fruits 
    instance.edible = true; 

    //Custom settings 
    instance.color = confObj.color; 
    instance.shape = confObj.shape; 
    instance.sweetness = confObj.sweetness; 
    instance.sweet = (instance.sweetness > 0); 

    return instance; 
}; 

var banana = newFruit({ 
    color: 'yellow', 
    shape: 'long', 
    sweetness: 8 
}); 

那麼,是什麼做的是使用需要的的關鍵字,而不是使用代碼的JS類的優點就像例子中提供的那樣?

+1

單詞「throw」與單詞「return」有着明顯不同的含義。 – Pointy

+0

另外,您對「newFruit」的示例調用在語法上不正確。 – Pointy

回答

2

JavaScript中沒有類。

構造函數(即設計用new運算符調用的函數)在需要對象的多個實例的情況下很方便。共享使用繼承的方法而不是向每個對象添加重複方法都有效率和維護的好處。另一種方法是使用ES5 Object.create,它或多或少地與new做同樣的事情。

如果只需要一個對象的單個實例,則不需要構造函數。閉包可用於「私人」變量和方法。

使用適合您的應用程序的任何策略,大型項目通常使用上述組合。沒有一個「最好」的解決方案。

0

一些優秀的程序員更喜歡一種方式,一些優先考慮另一種方式。

我喜歡用班,只是因爲我已經習慣了new關鍵字,但是看看這篇文章從拉斐爾的lib創造者:http://dmitry.baranovskiy.com/post/something-new

它讓我覺得...

相關問題