私は古典的なjavascriptローカル変数スコープのトピックでいくつかの問題を抱えていますが、JSON変数を扱っています。私は同じことに関して他の質問を見てきましたが、何も私のケースに正確には一致していませんでしたので、ここに行きます。私は3つのメソッド:func1、func2、およびfunc3を持つjavascriptから作成したクラスを持っています。また、jqueryで作成しているajax呼び出しからメソッドの1つに設定されているローカルJSON変数がありますが、そのローカル変数値を返すメソッドを呼び出すと設定されません。私は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
任意のアイデア?!?!私は心を傷つけている!
おかげ
あなたはサムにいる。今私はそれを回避するための良い方法を見つける必要があります。ありがとう! –