0

この演算子がこの JavaScript オブジェクトで機能しない理由

var data = {
    opt: null,

    ajaxCall: function () {
        //my ajax call code here

        this.fillDataInDiv(); //This statement is not working
        data.fillDataInDiv(); //this is working why ?
    },

    fillDataInDiv: function () {
        //code to fill data in div
    }
} 

誰かが説明できますか、これら2つのステートメントの違いは何ですか

  1. this.fillDataInDiv(); // and why this statement is not working
  2. data.fillDataInDiv();
4

2 に答える 2

0

上記は、オブジェクトではなく名前空間のdataように動作します。

このことを考慮 :

var data = function() {};

var dataObject = new data();

このクラスにメソッドを追加する必要がある場合:

var data = function() {

    // Equivalent to public members

    this.opt = null;

    // Equivalent to public methods :

    this.ajaxCall = function () {    
        this.fillDataInDiv(); 
    };

    this.fillDataInDiv = function () {
        //code to fill data in div
    };
}
于 2013-10-28T06:45:40.180 に答える
0

これは、ajaxCall呼び出し方によって異なります。

簡単に言えば、それはcallerに依存します。

を使用する場合data.ajaxCall();、はい、thisを参照しdataます。

しかし、呼び出し元が でない場合は、呼び出し元を参照しますがdata、 はthis参照しませんdata

例えば:

var func = data.ajaxCall;
func(); // this inside data.ajaxCall refers to the window object.
于 2013-10-28T06:46:14.377 に答える