2013-10-28 35 views
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 
    } 
} 

有人可以解释以调用javascript函数,就是这两个声明

  1. this.fillDataInDiv(); // and why this statement is not working
  2. 之间的区别data.fillDataInDiv();
+3

穿戴['的console.log(本);'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/这)只是使用它之前,你会发现... – Teemu

+0

是如何'ajaxCall'调用 –

+0

u能解释这两种说法之间的区别? – raw

回答

0

的上面的表现得更像一个名字空间,而不是一个对象。如果你有方法添加到这个类

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 
    }; 
} 
+0

IM这个问题,当我在函数之前使用ajax调用 – raw

0

这取决于方式ajaxCall被称为

考虑这一点。

对于简单的,它取决于呼叫者

如果您使用data.ajaxCall();,那么是的,this是指data

但是,如果来电者不是data,那么this指的是来电者,而不是data

例如:

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