我的C#面向braincells都跟我說這應該工作:調用的函數,而在函數中
var MyApp = function() {
currentTime = function() {
return new Date();
};
};
MyApp.currentTime();
顯然事實並非如此。但是,如果一個javascript函數是一個對象,我不應該能夠調用該對象上的函數嗎?我錯過了什麼?
我的C#面向braincells都跟我說這應該工作:調用的函數,而在函數中
var MyApp = function() {
currentTime = function() {
return new Date();
};
};
MyApp.currentTime();
顯然事實並非如此。但是,如果一個javascript函數是一個對象,我不應該能夠調用該對象上的函數嗎?我錯過了什麼?
currentTime
是全球性的(當您撥打myApp
時設置),而不是MyApp
的財產。
稱呼它,不需要重新定義功能:
MyApp();
currentTime();
然而,這聽起來像你想要麼:
一個簡單的對象
var MyApp = {
currentTime: function() {
return new Date();
};
};
MyApp.currentTime();
一個構造函數
var MyApp = function() {
this.currentTime = function() {
return new Date();
};
};
var myAppInstance = new MyApp();
myAppInstance.currentTime();
你可以改變你的代碼位,並使用此:
var MyApp = new (function() {
this.currentTime = function() {
return new Date();
};
})();
MyApp.currentTime();
或者,你可以這樣做:
var MyApp = {
currentTime: function() {
return new Date();
}
};
MyApp.currentTime();
JavaScript是一種功能範圍的語言。另外,沒有'var'聲明的變量將成爲全局範圍。給[這](http://stackoverflow.com/questions/111102/how-do-javascript-closures-work)一讀 –