我有一个在函数内返回的JSON对象(见下文),而后者又在父函数内部,然后是全局函数。在该全局函数中还有一个子函数需要访问JSON来解析记录。
我遗漏了一些不是问题的一部分,但希望包含足够的东西来解释我的问题!你可以看到
MyFunc.prototype.CreateMine = function(){
//do some work...
submit: function(e,v,m,f){
var xhr = new jsonRequest()
xhr.onreadystatechange = function(){
var jsonText = JSON.parse(xhr.responseText); //jsonText now contains my data
};
}
//need to access jsonText...
}
}
如果不完整的例子,请告诉我,谢谢提前克里斯
答案 0 :(得分:0)
您可能应该详细了解scopes in JavaScript的工作原理。简单来说,在外部函数中创建的所有变量都可以在内部函数中使用。所以你只需要在其中一个“上层”函数中声明你的jsonText
。
请注意var
中缺少submit
:这样它会尝试在范围树中找到jsonText
变量upper:
MyFunc.prototype.CreateMine = function(){
var jsonText
//do some work...
submit: function(e,v,m,f){
var xhr = new jsonRequest()
xhr.onreadystatechange = function(){
jsonText = JSON.parse(xhr.responseText); //jsonText now contains my data
};
}
jsonText // available
}
}
但是,在您的情况下,callback或deferred会更好,因为在submit
jsonText
中异步更改,因此您无法立即访问它调用submit
。
function myCallback(myData) {
// do smt with your data
}
MyFunc.prototype.CreateMine = function(){
//do some work...
submit: function(e,v,m,f){
var xhr = new jsonRequest()
xhr.onreadystatechange = function(){
var jsonText = JSON.parse(xhr.responseText);
myCallback(jsonText)
};
}
}
}