我有一个javascript函数,它有许多方法和变量,并返回一个我有点像类的对象文字,即
var myObject = function {
var somevars;
var someMethod = function(someInput) { };
return {
methodA:function(inputs) {
// calls someMethod, using somevars and inputs
},
methodB:function(inputs) {
// calls someMethod, using somevars and inputs
}
};
}
Run Code Online (Sandbox Code Playgroud)
在javascript中,通常创建一个名为"that"或"self"的变量或者在创建时存储"this"的值的某些东西,以便在将来的调用中可以使用它来指向对象拥有自己因为"这"可能指向别的东西.如果例如methodA被用作点击处理程序,这将非常有用.
如何在返回的对象文字中创建"that"变量?
有没有一种很好的方法来初始化一个对象文字中的"那个"变量,或者是否需要更加圆润的东西?
更新
是的,我想要引用的对象是对象文字本身.
是的,methodA和methodB也可能相互调用并引用返回的对象文字的其他成员.这就是我关心"这个"的原因.
我通过"new"创建了这个对象的一些实例.调用其中一个X.然后我想使用X.methodA作为鼠标事件处理程序,例如我有jquery代码将dom元素上的mouseup附加到X.methodA.但是看起来像$("#domElementId").mousemove(X.methodA)但是当调用mousemove时,方法A中使用的"this"变量不再指向X,据我所知.如果我错了,请随意纠正我.具体来说,方法A中的调用,比如方法B,将会失败,因为它们是使用this.methodB完成的,而"this"指向全局对象.
如果要将函数"绑定"到对象,则需要在函数内部引用对象,这意味着必须将其分配给变量:
var obj = {
methodA: function() {
// use obj here
}
};
return obj;
Run Code Online (Sandbox Code Playgroud)
但是,只有在methodA实际引用对象中的任何其他属性时才需要这样做.
如果您只访问评论中提到的内容,则无需进行此操作.无论功能如何被调用,你永远有机会获得someMethod,somevars并且inputs,因为他们是词法范围的.