无法使用此运算符调用javascript函数

时间:2013-10-28 06:36:31

标签: javascript jquery this

为什么此运算符不使用此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();

2 个答案:

答案 0 :(得分: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
    };
}

答案 1 :(得分:0)

这取决于ajaxCall被调用的方式。

简单来说,它取决于来电者

如果您使用data.ajaxCall();,则是,this引用data

但如果来电者不是data,那么this会引用来电者,而不是data

例如:

var func = data.ajaxCall;
func(); // this inside data.ajaxCall refers to the window object.