質問

私はグローバル変数を使用しての見通しを避けるためにゲッターとセッターに取り組んできました。しかし、私が問題に遭遇しました。私が代わりに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属性を設定していない、まだ戻っていないですと。

まだ未定義されるだろう
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top