不知道你想做什么,但试试这个:
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();