在其他范围内访问此项

时间:2013-06-26 13:14:59

标签: javascript scope

我在访问此范围时遇到问题,如何在嵌套中应用此范围。

问题在于我无法成功使用THIS。

var Module = {
    els: {
        body: $('body')
    },

    success: function(result) {
        // Body is now undefined, no access to this
        console.log(result, this.els.body);
        // Access only via Module, this should be end result

        Module.els.body.html(result)
    },

    init: function() {
        $.get('/echo/jsonp', this.success);
    }

};

Module.init();

http://jsfiddle.net/P6X8L/

1 个答案:

答案 0 :(得分:4)

使用jQuery,您可以使用$.proxy(function, context)

$.get('/echo/jsonp', $.proxy(this.success, this);

没有jQuery,你可以使用一个闭包

var myContext = this;
$.get('/echo/jsonp', function(X) { myContext.success(X); );

var myContext = this;
$.get('/echo/jsonp', function() { myContext.success.apply(myContext, arguments); );