function modifyDatabase(tabla, id, objData, callback, arrayCallback){
$.ajax({
url: 'modifyDatabase.php',
type: "POST",
dataType: "json",
data: 'tabla='+tabla+'&id='+id+strData,
success: function(data){
callback(data);
},
});
}
var obj = {
set: function (data){
alert(this.var1);
},
var1: 100
}
function modifyDatabase('', '', '', obj.set, '');
运行时,我收到一条错误消息,告诉我this.var1未设置或未定义。如果我从其他地方调用该方法(而不是来自异步响应)它可以正常工作。
好像方法'set'不在'obj'中。
发生了什么事?
答案 0 :(得分:2)
当您以这种方式传递对函数的引用时,它实际上也没有传递对该对象的引用。快速解决方法是创建一个匿名函数,通过闭包引用实际对象。以下是对其无效的原因的详细说明:http://bitstructures.com/2007/11/javascript-method-callbacks
简而言之,您需要这样做:
function modifyDatabase('', '', '', function(){obj.set();}, '');