使用两个不同的上下文调用Javascript函数

时间:2014-12-09 16:01:39

标签: javascript jquery

我们假设function中的namespace喜欢:

app.MyNamespace = {
    defaults: {
        myOption: 1
    },
    myFunction(param1, param2, options){
         options = $.extend(options, this.defaults);
    }
}

然后,如果我在其他情境(例如window)中使用

调用此内容
app.MyNamespace.myFunction.call(this);

显然,options并未随defaults一起扩展,因为它松散了正确的上下文。

如何在函数中保留defaults,但在另一个上下文中调用它?

Fiddle

2 个答案:

答案 0 :(得分:2)

只需将其指向默认值

即可
app.MyNamespace = {
    defaults: {
        myOption: 1
    },
    myFunction(param1, param2, options){
         options = $.extend(options, app.MyNamespace.defaults);
    }
}

答案 1 :(得分:0)

如果我得到你想要的东西,应该这样做:

app.MyNamespace = {
defaults: {
    myOption: 1
},
myFunction:function(param1, param2, options, scope){
     options = $.extend(options, this.defaults);
 }}; app.MyNamespace.myFunction('param1','param2', {option1:1,option2:2}, this);