我有時喜歡這個JavaScript編碼差異
function class1(){
.....
class1.prototype.callme = function(){
alert("hai");
}
}
then I instantiate using (new class1()).callme();
創建類,有的時候,我使用模塊化模式
var class2 = (function(){
var privatemethod = function(){
....
}
var publicmethod = function(){
alert("am public");
}
return{
callme:publicmethod
}
})();
then I call class2.callme()
請告訴我優勢和劣勢,可一些身體請解釋。
你爲什麼要在'prototype'上創建屬性/方法_inside_構造函數?在你的第一個例子中,每當你創建一個新的'class1'實例時,'class1.prototype.callme'被覆蓋,這是一種低效率的方式。如果你真的使用'(new class1())。callme()'(即,這不是對這個問題的簡化),那麼整個類的事情就是多餘的。 – nnnnnn 2012-08-03 04:20:50
只是一個例子,但我只想要優勢和劣勢 – 2012-08-03 04:25:48
第一種模式並不是一個好計劃 - 它是一種反模式。實例化一個對象只是從其原型中調用一個方法,這對你沒有多大幫助,第二種方式總是會更好。如果實際上你實際上對'class1'的單個實例做了某些事情,那麼它爲第二個例子提供了一個不同的目的,但是當你沒有給出更現實的例子時,比較它們是很難的。 – nnnnnn 2012-08-03 04:30:14