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

使用两种不同的上下文调用Javascript函数,javascript,jquery,Javascript,Jquery,假设我在命名空间中有一个函数,比如: app.MyNamespace = { defaults: { myOption: 1 }, myFunction(param1, param2, options){ options = $.extend(options, this.defaults); } } 然后,如果我在其他上下文(例如,窗口)中使用 显然,选项没有扩展默认值,因为它失去了正确的上下文 如何在函数中保留默认值,但在另一

假设我在
命名空间中有一个
函数
,比如:

app.MyNamespace = {
    defaults: {
        myOption: 1
    },
    myFunction(param1, param2, options){
         options = $.extend(options, this.defaults);
    }
}
然后,如果我在其他上下文(例如,
窗口
)中使用

显然,
选项
没有扩展默认值
,因为它失去了正确的上下文

如何在函数中保留
默认值
,但在另一个上下文中调用它


只需将其指向默认值

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

如果我得到了你想要的,这应该是:

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);

app.MyNamespace.myFunction.call(this)
为什么这样称呼它?因为它可以被不同的类使用,你可以在你的
myFunction
中使用它,你可以添加
.bind(这个)也许你没有明白我的意思:)哦,好的。。所以你想改变上下文。我认为问题在于维护上下文。
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);