我正在写一堂小课,但我不明白为什么这行不通:

var Browsertest = {

    isIE: /MSIE (\d+\.\d+)/.test(this.getUserAgent()),

    getUserAgent: function() {
        return navigator.userAgent;
    }

};

console.log(Browsertest.isIE);


我收到getUserAgent()不存在/可用的错误(在IE9和其他浏览器中)。

最佳答案

您在定义getUserAgent函数之前先调用它。使用object literals时,需要在使用实例成员之前对其进行定义。

两种选择...

一:

var Browsertest = {
    getUserAgent: function() {
        return navigator.userAgent;
    },

    isIE: function() { return /MSIE (\d+\.\d+)/.test(this.getUserAgent()); }
};

console.log(Browsertest.isIE());


二:

var Browsertest = new function() {
    var that = this;

    this.getUserAgent = function() {
        return navigator.userAgent;
    };

    this.isIE = /MSIE (\d+\.\d+)/.test(that.getUserAgent());
};

console.log(Browsertest.isIE);

08-17 07:57