javascript OOP中使用回调函数后如何设置实例变量
我想代码应该是这样的: Item.jsjavascript OOP中使用回调函数后如何设置实例变量,javascript,ajax,oop,Javascript,Ajax,Oop,我想代码应该是这样的: Item.js var item = { id = 0, itemname = "name", callAjax : function(){ var ajaxdata = {itemname:this.itemname} MM.callajax("apiname",ajaxdata,function(data){ //this is callback function after ajax is
var item = {
id = 0,
itemname = "name",
callAjax : function(){
var ajaxdata = {itemname:this.itemname}
MM.callajax("apiname",ajaxdata,function(data){
//this is callback function after ajax is done
id = data; // suppose data = 2
});
},
}
MMCallajax.js
var MM = {
callajax: function (apiname, data, callback) {
var apiurl = this.apiBaseUrl + "/" + apiname;
jQuery.ajax(
apiurl,
{'type': 'POST',
'dataType': 'json',
'data': data,
'xhrFields': { withCredentials: true }
})
.done(this.apiCbDone(callback))
},
apiCbDone : function (callback) {...},
}
我想在使用回调函数后更新item object equal数据变量中的id变量
如何解决这个问题 为什么不这样
var item = { id: 0 };
MM.callajax("apiname",ajaxdata,function(data){
//this is callback function after ajax is done
item.id = data; // suppose data = 2
});
你在问什么?什么是MM?什么叫阿贾克斯?这和OOP有什么关系?首先,你的代码有错误的语法OK,我再次编辑我的代码。MM是关于调用ajax的课程。我不想让你知道MM班。因为这是很长的代码。但我想让你在打完电话后知道。它将返回数据=2;忽略代码中的语法错误,您尝试执行的操作是不可能的,原因有三:1。回调函数是异步执行的,稍后代码中将不会分配id,2。id不是一个变量,您不能给它赋值,尽管javascript是善良的,如果您不使用strict和3,它将接受这一点。即使id是一个变量,我也不认为它是在双嵌套函数的上下文中…@reverse\u engineer我认为这是一个很好的答案。你的理由让我改变了密码。但是现在,我解决了这个问题。非常感谢。