gpt4 book ai didi

javascript - 如何确保返回的对象文字中的方法调用使用预期的 "this"

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:33:25 26 4
gpt4 key购买 nike

我有一个 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
}

};
}

在 javascript 中,通常会创建一个名为“that”或“self”的变量,或者在创建时存储“this”值的类似东西,以便在以后的调用中可以使用它来指向自己的对象self 因为“this”可能指向别的东西。这很有用,例如methodA 用作点击处理程序。

如何在我返回的对象文字中创建一个“that”变量?

有没有什么好的方法可以在对象字面量中初始化“that”变量,或者是否需要更圆的东西?

更新

是的,我希望能够引用的对象是对象字面量本身。

是的,methodA 和 methodB 也可能相互调用并引用返回对象文字的其他成员。这就是我关心“这个”的原因。

我通过“新建”创建了该对象的多个实例。调用其中一个 X。然后我想使用 X.methodA 作为鼠标事件处理程序,例如我有 jquery 代码将 dom 元素上的 mouseup 附加到 X.methodA。但这看起来像 $("#domElementId").mousemove(X.methodA) 但是当调用 mousemove 时,methodA 中使用的“this”变量不再指向我所理解的 X。如果我错了,请随时纠正我。具体来说,在方法 A 中调用方法 B 将失败,因为它们确实是使用 this.methodB 完成的,并且“this”指向全局对象。

最佳答案

如果你想将函数“绑定(bind)”到对象,你需要在函数内部有一个对象的引用,这意味着你必须将它分配给一个变量:

var obj = {
methodA: function() {
// use obj here
}
};
return obj;

但是,只有当 methodA 实际上引用了对象的任何其他属性时才需要这样做。

如果您只是访问评论中提到的内容,则没有必要这样做。无论函数如何调用,您始终可以访问 someMethodsomevarsinputs,因为它们是词法范围的。

关于javascript - 如何确保返回的对象文字中的方法调用使用预期的 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30850660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com