如何在不使用javascript中的那个或self的情况下在函数内访问它?

时间:2014-06-22 22:15:22

标签: javascript

我试图在javascript中编写一些OOP,我偶然发现了一个问题,我确信我将在稍后的代码中使用它并希望现在处理它。

例如,使用此代码:

var FeedClass = function(){

    this.init = function(){
        this.loadItems();
    },
    this.loadItems = function(){
        var that = this; // heres my problem
        function inner(){
            that.startLoading();
        }
        inner();
    },
    this.startLoading = function(){
        alert("started Loading");
    }

    this.init();
};

var feed = new FeedClass();

问题是我将使用许多调用"this"的内部函数,如果我在每个范围内编写var that = this,我的代码将会很混乱。是否有我可以使用的其他模式或解决方法?

1 个答案:

答案 0 :(得分:2)

您可以使用call method设置功能的上下文:

this.loadItems = function(){
    function inner(){
        this.startLoading();
    }
    inner.call(this);
},

apply method的工作方式类似,不同之处在于您在调用中指定参数的方式。

您还可以使用bind method设置功能的上下文。这允许您将上下文绑定到函数并传递函数引用以便稍后调用:

this.loadItems = function(){
    function inner(){
        this.startLoading();
    }
    var i = inner.bind(this);
    i();
},

注意:IE 8或更早版本不支持bind方法。