2015-01-07 37 views
1

我已經寫了一些代碼,我在視頻中發現,它看起來是這樣的:影響的「新」在JavaScript

var clientX = clientX || {} ; 
clientX.MyClass = function(initialValue){ 
    var var1 = initialValue; 
    var publicMembers = { 
    get_var1 : function(){ 
     return var1; 
    } 
    }; 
    return publicMembers; 
} 



var result = new clientX.MyClass("val1"); 
alert(result.get_var1()); 

clientX.instance = new clientX.MyClass("val2"); 
alert(clientX.instance.get_var1()); 


clientX.instance2= new clientX.MyClass("val3"); 
alert(clientX.instance2.get_var1()); 

的事情是,刪除了「新」的關鍵字後,當我使用: var result = new clientX.MyClass("val1");沒有什麼改變,爲什麼作者選擇使用它?有什麼效果?

+1

可能重複【什麼是JavaScript中的 '新' 的關鍵字?](HTTP: //stackoverflow.com/questions/1646698/what-is-the-new-keyword-in-javascript) –

回答

5

MyClass函數不使用this並具有明確的return值,所以使用new沒有任何實際影響。

3

新關鍵字被用作pseudoclassical instantiation的一塊,其中構造函數對象具有附加到關鍵字「this」的屬性,但是沒有寫入任何返回值。

var Car = function(){ 

    this.color = 'blue'; 
    this.make = 'toyota'; 
    this.model = 'camry'; 

} 

現在,寫變種X =新車()將下列行添加到解釋:的

var Car = function(){ 
    var this = {}; //added by new 
    this.color = 'blue'; 
    this.make = 'toyota'; 
    this.model = 'camry'; 
    return this; //added by new 
}