0

我可以请求解释吗:

下面的代码代表什么?它会创建一个 DndUpload Ojbect 吗?或者,它是否创建了一个 DndUpload() 函数?我想念的是new通常在 JavaScript 对象创建期间出现的语句。由于我很困惑,我可以要求一些解释。

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 回答