不知道你正在嘗試做的,但試試這個:
var Test = (function() {
function Test() {
this.sum = this.calculate();
}
Test.prototype.calculate = function() {
var n = 5;
return n;
}
return Test;
})();
var mytest = new Test();
alert(mytest.sum); // 5
要回答你的問題 - n
是undefined
,因爲它有,當你試圖做this.sum = n;
沒有價值。如果你第一次調用this.calculate()
,然後嘗試分配this.sum = n;
,它可能會奏效。但即使在這種情況下,這是非常錯誤的,因爲你將變量n
泄漏到全局命名空間中(當你沒有明確地初始化變量var
時,它泄漏到全局命名空間 - window
)。所以說明我的意思 - 這可能會起作用:
var Test = (function() {
function Test() {
this.calculate();
this.sum = n; // n is global now, hence accessible anywhere and is defined by this moment
}
Test.prototype.calculate = function() {
n = 5; // not initialized with var so it leaks to global scope - gets accessible through window.n
return n; // has no sense, since you do not use returned value anywhere
}
return Test;
})();
var mytest = new Test();
'N' *是* 5調用'calculate'後,只有你之前得到一個例外。看看你的錯誤控制檯。 – Bergi 2013-03-03 12:53:39
你想做什麼?你什麼時候認爲'n'是5,應該返回'n'?你是如何測試它的? – Bergi 2013-03-03 12:55:02