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

时间:2012-12-31 00:31:53

标签: javascript function scope

尝试在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());

2 个答案:

答案 0 :(得分:4)

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

而是使用这个成语:

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已关闭。 This可能值得一读。

答案 1 :(得分:2)

您需要将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());​