0

説明をお願いできますか?

以下のコードは何を表していますか?DndUpload Ojbectを作成しますか?または、DndUpload()関数を作成しますか?私が見逃しているのは、newJavaScriptオブジェクトの作成中に通常存在するステートメントです。混乱しているので、説明をお願いできますか。

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

私の知る限り、これはJavascriptでオブジェクトを作成する方法です。

var myObject = new function()
{
};

説明付きのリンクがあれば、それが役に立ちます。ありがとうございました。

4

3 に答える 3

2

これを書くのはもっと悪い方法です:

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

これは関数宣言です。のインスタンスは作成されませんDndUpload。技術的に、オブジェクトを作成します–その名前はDndUploadあり、のインスタンスですFunction。この「クラス」のインスタンスを作成するには:

var instance = new DndUpload(document.getElementById('someInputId'));
于 2012-09-10T20:29:18.253 に答える
1

あなたが持っているコードは本質的に「クラス」のコンストラクターを作成します。それは多かれ少なかれオブジェクトの青写真です。

次に、そのコンストラクターをという変数に入れます。DndUpload

これで、次のオブジェクトを作成できます

var myObject = new DndUpload(input elem)
于 2012-09-10T20:29:31.837 に答える
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
于 2012-09-10T20:29:53.850 に答える