javascript - 如何从 JS 中的监听器函数内访问对象

标签 javascript

我想从 require() 函数的 success 监听器内部访问 foo.settings.debug 对象。我不断收到未定义的错误,当我引用“this”时,它最终会引用 ajax 对象。请帮忙。

var foo = {

    info: {

        version: '0.0.1'

    },

    settings: {

        debug: true

    },

    require: function(script) {

        $.ajax({
            url: script,
            dataType: "script",
            async: false,
            success: function(){
                if(foo.settings.debug) console.log('loaded js file: ' + script);
            },
            error: function(){
                throw new Error("Could not load script " + script);
            }
        });

    }
}

最佳答案

您需要对 foo 的引用,它是 foo 内部的 thisthis 将是您的闭包内部的其他内容,因此您需要保留对 这个就像这样:

require: function(script) {
        var self = this;
        $.ajax({
            url: script,
            dataType: "script",
            async: false,
            success: function(){
                if(self.settings.debug) console.log('loaded js file: ' + script);
            },
            error: function(){
                throw new Error("Could not load script " + script);
            }
        });

    }

关于javascript - 如何从 JS 中的监听器函数内访问对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13501290/

相关文章:

javascript - OpenLayers:OSM 未显示在 div 上

javascript - 我如何使用 Meteor 重置客户端订阅

javascript - 谷歌应用程序脚本不循环

javascript - Pivot Grid DevExtreme 中的字段配置

javascript - 如何在socket.io中的断开事件上获取断开连接的客户端的套接字ID

javascript - 在 javascript live 中,在输入字段中写入时,在句号后大写

php - PHP 中的警报输入名称

javascript - 如何按顺序调用异步 Action 创建者?

javascript - 为什么找不到这个 JavaScript 函数

javascript - 当您有多个同名类时,使用 jQuery 选择特定类