2016-08-25 20 views
0
var counter = function(){ 
    var n = 0; 
    return { 
     inc: function() {++n}, 
     reset: function(){n=0} 
    } 

} 

counter.inc() //1,2 and so on\ 

我看到上面的代碼在初學者教程的某處。寫多個函數有什麼不好?像對象內組功能的優點

function reset(){} 

function inc(){} 
+3

它污染了全球範圍。通過這種方式,您可以使用適當的設計模式,在這種情況下,封裝將全局訪問中的「var n」隱藏起來。這就像在C++或PHP等其他OO語言中使用私有成員一樣。 – Ultimater

+0

注意:如你所寫,這些功能是無用的,因爲沒有辦法訪問計數器的值。你可能需要一個getCount方法或其他東西。 –

+1

您的示例代碼不起作用,您需要調用'counter()'來創建對象。 – Bergi

回答

-1

試想就像你有2種手機:iPhone和NormalPhone

var iphone = function(){ 
 
    var n = 0; 
 
    return { 
 
     touch: function() {....}, 
 
     call: function(){....} 
 
    } 
 
}

這裏NormalPhone只是有()函數調用它不能觸摸然後觸摸( )功能不適用於NormalPhone。

我們稱之爲封裝,你定義的類有一些特殊的功能,只能用於從該類繼承的實例。

+0

您的答案中的代碼和您寫的內容不對齊 – Phil