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
    }
} 

有人可以解释一下,这两种说法有什么区别

  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被调用的方式。

简单来说,这取决于调用者

如果您使用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 回答