我以爲我開始很好地理解JavaScript,但顯然不是。讓我用一個例子來解釋我的問題。首先,我已經定義了以下模塊:創建模塊的多個實例
var Test = function() {
var counter = 0;
function init() {
alert(counter);
}
return {
counter: counter,
init: init
}
};
我再創建2個實例:
var test1 = new Test();
var test2 = new Test();
現在我更新計數器變量(因爲它是公開的),並做一些提醒。到現在爲止還挺好。
alert(test1.counter); // Alerts 0
test1.counter = 5;
alert(test2.counter); // Alerts 0
test2.counter = 10;
alert(test1.counter); // Alerts 5
現在終於我說以下內容:
test1.init(); // Alerts 0
test2.init(); // Alerts 0
這是我不明白的一點。爲什麼這個警報0?我認爲第一個警報將是5和第二個10.
我會很感激,如果有人能解釋如何可以工作或指出我在正確的方向。由於
標量類型的變量是按值而不是按引用傳遞。所以'return {counter:counter,...}'只是複製當前的'var counter'值並改變'this.counter'不會影響'var counter'。 – 2013-02-09 22:28:25