GetterおよびSetterと一緒にAJAXロード
-
26-09-2019 - |
質問
私はグローバル変数を使用しての見通しを避けるためにゲッターとセッターに取り組んできました。しかし、私が問題に遭遇しました。私が代わりにAJAX呼び出しを実行しようとすると、整数の変数で罰金を動作するコードは、以下の例外がスローされます。なぜこれが起こっている誰かが私に説明できますか?
<時間>function Object_XML() {
me = this;
me.xml = null;
}
Object_XML.prototype = {
getXML: function() {
return me.xml
},
setXML: function(data) {
me.xml = data;
},
loadXML: function() {
$.ajax({
type: "GET",
url: "questions.xml",
dataType: "xml",
success: function(xml) {
me.setXML(xml);
} //close success
});//close AJAX
}//close setXML
};
$(document).ready(function() {
var data = new Object_XML();
alert("This is an " + data.getXML());
data.setXML();
alert("This is an " + data.getXML());
});
<時間>
おかげで、エリオット・ボンネビル
解決
あなたはただあなただけme = this;
を使用しないことにより、me
グローバル変数を作っvar
を使用することによりゲッターとセッターとのプライベート変数の使用を否定しました。 (VARを使用して定義されていない任意の変数がグローバルネームスペースに取り付けられます)
あなたのケースでは、あなたがちょうどthis
を使用し、個人的としてme
を避けることができ、同じオブジェクトの範囲内で作業していることから、私はそれは混乱だと思います。しかし、あなたはそのパラダイムに固執したい場合は、使用var me = this;
あなたの例では、実際には不明である。ここで、エラーが起こるのでしょうか? data.setXml()
がme.xml
にセットを賭けるのであなたは、パラメータなしでundefined
を呼んでいます。それはあなたがメソッドに何も渡さない場合に予想される。
また、原因あなたのコールの非同期性質があることに注意してください
data.loadXml();
console.log("data.getXML();", data.getXML()); // would be undefined
data.getXML()その瞬間に、それはおそらくあなたの非同期呼び出しは、このようにあなたのオブジェクトのXML属性を設定していない、まだ戻っていないですと。
まだ未定義されるだろう所属していません StackOverflow