作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设我们有一个名为 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/
我是一名优秀的程序员,十分优秀!