gpt4 book ai didi

javascript - 如何在 JQuery 回调函数中获取对象引用?

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

假设我们有一个名为 aObject 的 javascript 对象,并且 test() 函数用作 JQuery 中的回调函数

var aObject = {
aVariable : 'whatever value',
test : function() {
// Trying to access property. But doesn't work as expected since I am getting the DOM element, not the aObject reference
var temp = this.aVariable;
}
}

var anInstanceOfAObject = $.extend({}, aObject);

anInstanceOfAObject.someFunction = function () {
// I have to put "this" in a variable since "this" in the context below refers to the DOM element, not the instance of the object
var placeHolder = this;
$('some random div.element').theJavascriptFunction({
"theJavascriptCallbackFunction": placeHolder.test,
});
}

在 test() 函数中,“this”的上下文通常是 DOM 元素。我的问题是如何引用 aObject,因为我们不能使用“this”来引用它。

编辑:我不确定上面的语法是否是实例化对象的正确/首选方式。我看到一些使用这种语法的例子

var aObject = function() {....

如果这似乎与问题相关,请通知我。

最佳答案

你只需要包装你的方法调用以获得正确的this:

anInstanceOfAObject.someFunction = function () {
var placeHolder = this;
$('some random div.element').theJavascriptFunction({
"theJavascriptCallbackFunction": function() { placeHolder.test() }
});
}

当您仅使用 placeHolder.test 作为回调时,您只是传递了对 test 函数的引用,该函数将通过 DOM 元素被调用作为这个

你也可以试试 bind :

anInstanceOfAObject.someFunction = function () {
var placeHolder = this;
$('some random div.element').theJavascriptFunction({
"theJavascriptCallbackFunction": this.test.bind(this)
});
}

关于javascript - 如何在 JQuery 回调函数中获取对象引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7304433/

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