我在经典javascript局部变量作用域主题上遇到了一些麻烦,但是处理了一个JSON变量。我在这里查看了其他同样的问题,但没有任何结果与我的案例完全匹配,所以这里就是这样。我有一个我从javascript制作的类,有3个方法:func1,func2和func3。我也有一个本地JSON变量,它是在我使用jquery调用的ajax调用中的一个方法中设置的,但是当我调用返回该局部变量值的方法时未设置。我知道ajax工作正常,b/c我可以显示正在返回的数据并被设置为json变量没有问题。只有当我调用另一个与该JSON变量交互的方法时才会发生这种情况。这里是我的代码基本版本:自定义javascript类和私有变量范围问题
function func1(){
func2();
}
function func2(){
$.getJSON("http://webservice.mydomain.com/methodname&jsoncallback=?",
function(data){
this.z = eval("(" + data.d + ")");
alert(data.d); //this displays the data!
alert(this.z.ArrayProperty[0].Property1); //this displays
//the correct data too!
}
);
}
function func3(){
return this.z.ArrayProperty[0].Property1;
}
function myClass(var1, var2){
this.x = var1;
this.y = var2;
this.z = "";
this.func1 = func1;
this.func2 = func2;
this.func3 = func3;
}
然后在我的.html页面,我有以下代码:
var obj = new myClass(1,2);
obj.func1("abc");
alert(obj.func3()); //ERROR: this.z.ArrayProperty is undefined
任何想法?!?!我在绞尽脑汁!
谢谢
你在Sam身上。现在我只需要找到一个好方法来解决这个问题。谢谢! – 2009-08-07 20:31:19