访问命名空间中的全局变量

Accessing a global variable inside a namespace

本文关键字:全局变量 命名空间 访问      更新时间:2023-09-26

在var命名空间中声明变量时遇到麻烦…
jsFiddle . .http://jsfiddle.net/bobbyrne01/jeh7Y/

Error: SyntaxError: missing : after property id
Line: 23, Column: 8 Source Code: var startTime = null;

var Utils = {
    var startTime = null;
    getStartTime: function(){
        return startTime;
    },
    setStartTime: function(startTimeTemp){
        startTime = startTimeTemp;
    },
}
Utils.setStartTime(new Date());
alert(Utils.getStartTime());

您试图在对象文字中声明变量。这是不允许的。

请使用以下习语:

var Utils = function(startTime) {
    this.getStartTime = function(){
        return startTime;
    };
    this.setStartTime = function(startTimeTemp){
        startTime = startTimeTemp;
    };
}
u = new Utils(new Date());
alert(u.getStartTime());

如果javascript不是你的第一语言,它可能很难理解startTime '停留'与Utils的实例。这是因为javascript有闭包。

您需要将startTime声明为如下所示的对象属性,然后使用this引用该属性:

var Utils = {
    startTime: 'test',
    getStartTime: function() {    
        return this.startTime;
    },
    setStartTime: function(startTimeTemp) {
        this.startTime = startTimeTemp;
    },
}
alert(Utils.getStartTime());    
Utils.setStartTime(new Date());
alert(Utils.getStartTime());​