为什么此运算符不使用此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
}
}
有人可以解释一下,这两个陈述有什么区别
this.fillDataInDiv(); // and why this statement is not working
data.fillDataInDiv();
答案 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.