2012-09-10 28 views
0

我可以請求解釋:JavaScript - 含義:var DndUpload = function(inputElem){};

以下代碼代表什麼?它是否創建了DndUpload Ojbect?或者,它是否創建了DndUpload()函數?我想念的是在創建JavaScript對象期間通常存在的聲明new。我可以請求解釋,因爲我很困惑。

var DndUpload = function (inputElem) 
{ 
    this.input = inputElem; 
    this.dropZone = null; 
    this.isDragging = false; 
    this.init(); 
}; 

據我所知,這是JavaScript來創建對象的方式:

var myObject = new function() 
{ 
}; 

如果您有任何解釋的鏈接,這將有助於。謝謝。

+1

你的答案就在這裏:http://stackoverflow.com/questions/1646698/what-is-the-new- keyword-in-javascript – totten

+0

@EnesUnal:+1,您好,感謝您的寶貴意見。這有助於解決問題,儘管* Answers *部分的解釋也非常有幫助。 –

+0

如果有幫助,我很高興,最好。 – totten

回答

1
var myObject = new function() 
{ 
}; 

定義了一個匿名構造函數,然後實例使用匿名的新對象構造函數。它可能已被替換爲var myObject = {}

var DndUpload = function (inputElem) 
{ 
    this.input = inputElem; 
    this.dropZone = null; 
    this.isDragging = false; 
    this.init(); 
}; 

定義了一個構造函數(從技術上講是一個賦給變量的匿名構造函數)。然後,您可以用new調用構造函數來創建這個「類」的對象:

var dndUploadObject = new DnDUpload(), 
    anotherUploadObject = new DnDUpload(); //2 unique DnDUpload objects 
+0

+1,你好。感謝你的回答。儘管所有的答案都很出色,但在我看來,這個答案最能說明我的問題。特別是關於匿名構造函數的信息對我來說是新的。我將這個答案標記爲*可接受的答案*。再次感謝你。 –

2

這是寫這更差的方式:

function DndUpload(inputElem) 
{ 
    this.input = inputElem; 
    this.dropZone = null; 
    this.isDragging = false; 
    this.init(); 
} 

這是function declaration。它不創建DndUpload的實例。從技術上講,它確實創建一個對象 - 它的名字是DndUploadit is an instance of Function。爲了創建這個實例「類:」

var instance = new DndUpload(document.getElementById('someInputId')); 
+0

+1,謝謝你的即時回答。這是一個很好的解釋。它清楚地回答了我的問題。感謝您提供您提供的其他鏈接。它們爲您的答案增加了價值。 –

1

你有本質上的代碼是「類」這或多或少是個藍圖的對象創建一個構造函數。

然後,它把這個構造到一個名爲DndUpload

變量所以,你現在可以使對象與

var myObject = new DndUpload(input elem) 
+0

+1,謝謝你的支持。它幫助我很好地解釋了這個問題。 –

相關問題