函数中`this`和`var`有什么区别?

时间:2013-08-07 16:23:40

标签: javascript

我在学校的项目中有以下JavaScript代码。 (这段代码是为我提供的。)有人可以解释var SetDataRequestthis.SetDataRequest之间的区别我理解函数中发生了什么,而不是为什么以这种方式创建函数。它是否类似于重载?

Tele.Forms.Controller = new function () {
  var _requestData; 
  this.SetRequestData = function (requestData) {
        _requestData = requestData;
  };

  var SetRequestData = function () {
    var fields = $('.FormsMainTable');
    var reqData = ['REQUEST_RECORD_ID', 'DATE_SUBMITTED', 'REQUESTER_ID'];
    ....
    ....
  };

  ....
  ....
};

2 个答案:

答案 0 :(得分:1)

this.setRequestData上提供了

Tele.Forms.Controller.setRequestData,而var SetRequestData仅适用于该功能的内部。将this.setRequestData视为Tele.Forms.Controller对象的API,将SetRequestData视为允许API工作的内部方法之一(我假设{{1}在...this.setRequestData之间建立了一些联系。

答案 1 :(得分:1)

object = new function () {..}是创建一个函数对象,并定义函数对象的构造函数。

在函数对象构造函数中,您可以使用表达式this.new_var = function () {..}添加或修改对象的公共成员函数,或者如果您单独声明函数对象,则使用相同函数构造函数的任何对象: e.g

//define new function object
function Car() {
    this.paint = function (...) {..};
}
//construct new object
var myCar = new Car();
//then you can use myCar.paint(...)

函数对象构造函数中的表达式var something = ...用于创建私有成员变量或函数。 函数对象中的表达式var something = function() {...}(*没有关键字new的通知)只是为对象创建一个私有成员函数。

*在此处阅读更多有用的信息:http://javascript.crockford.com/private.html