2013-08-07 56 views
-1

我從學校的一個項目獲得以下JavaScript代碼。 (這段代碼是爲我提供的。)有人可以解釋var SetDataRequestthis.SetDataRequest之間的區別我明白在函數中發生了什麼,而不是爲什麼函數是以這種方式創建的。它是否類似於重載?函數中`this`和`var`有什麼區別?

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']; 
    .... 
    .... 
    }; 

    .... 
    .... 
}; 
+1

在這裏你去http://stackoverflow.com/questions/11285975/difference-between-var-and-this-in-javascript-functions – udidu

+2

請儘量使您的問題標題是您問題的摘要。 –

+1

http://jsfiddle.net/tvCST/ –

回答

1

this.setRequestData可在Tele.Forms.Controller.setRequestData,而var SetRequestData僅提供給函數的內部。將this.setRequestData想象爲Tele.Forms.Controller對象的API,將SetRequestData作爲允許API工作的一種內部方法(我假設...this.setRequestDataSetRequestData之間建立了某些連接)。

1

object = new function() {..}是爲了創建一個函數對象,還定義了函數對象的構造函數。

在函數內對象構造可以使用表達this.new_var = function() {..}添加或修改的對象的公共成員函數,或者如果單獨聲明的功能對象,它使用相同的功能構造的任何對象的: 例如

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

在函數對象構造函數中使用表達式var something = ...來創建私有成員變量或函數。 函數對象(*通知中沒有關鍵字new)內部的表達式var something = function() {...}只是爲對象創建私有成員函數。

*更多有用的信息在這裏:http://javascript.crockford.com/private.html

相關問題