我一段時間都在爲JavaScript問題苦苦掙扎,我無法在網上找到解釋。我想這是因爲我沒有輸入正確的關鍵字,這也可能與我爲什麼一直在掙扎。javascript函數是對象嗎?
我的基本假設是,它是可以改變的對象:
> var x = {'n': 2};
> x['n']
2
> x['n'] = 3;
3
pheww奏效。但仍然(功能也是對象):
> var addn = function(a) {
var n = 2;
return n + a;
}
> addn(3);
5
> addn['n'] = 3;
3
> addn(3);
5
這次我不能改變'n'。有沒有辦法解決這個問題,同時保持功能的味道?而不是完全OO。我有一個相關的問題,就是如何維護函數的依賴關係,以便進行測試 - 再次不用OO?因爲我正在尋找解決方案,但如果可能的話,我還想了解Javascript中的哪種機制讓我掙扎。
乾杯,
馬克
免責聲明: 通過提OO我不原意說對OO什麼。而且我也不打算對VI或Emacs發表任何言論。如果我以某種方式傷害了你的感情,請跳過這一個。
你總是可以傳入n作爲參數,但我認爲這不是你要求的。 – Orbit 2011-03-01 17:58:58
_你是什麼意思_「這次我無法改變'n'」_? 'addn ['n']'返回'3'嗎? – 2011-03-01 18:00:49
關於您的面向對象的評論:您正在嘗試*重新創建* OO,即使在JavaScript中已經做得足夠多了。 ;) – 2011-03-01 18:06:07