数组中的 JavaScript 对象

Javascript Objects in Arrays

本文关键字:对象 JavaScript 数组      更新时间:2023-09-26

我正在尝试使用Ajax文件上传,如下所示:http://valums.com/ajax-upload/

如您所见,我需要创建一个 qq。文件上传器对象来初始化脚本。但是,我需要能够在不知道元素 ID 的情况下动态创建此对象。我尝试创建这样的东西:

var uploader, i = 0;
$(".file-upload").each(function() {
    $e = $(this);
    i++;
    uploader[i] = new qq.FileUploader({
        element: $(this)[0],
        action: 'uploadfile.php',
        allowedExtensions: ['doc', 'docx', 'pdf'],
        multiple: false,
        onComplete: function(id, fileName, responseJSON) {
            $($e).siblings('input').val(responseJSON.newfilename);
        }
    });
});

我了解到我添加的[i]部分会破坏脚本,因为我不能在数组中包含对象。

有没有其他方法可以动态创建此对象?它们都需要有一个唯一的名称,否则 onComplete 函数将被覆盖。我尝试使用eval(),但我似乎无法使其正常工作。

您必须先将uploader声明为数组:

var uploader = [];  

因为您声明了变量而没有定义它,所以它的默认值为 undefined ,并且您的代码被转换为类似 undefined[i] 的内容,从而触发错误。

必须是这样的

var uploader = {}; 

否则上传者为空,您无法为其分配任何内容。

编辑

所以有两个反对意见,在我看来,如果一个人想要有一个数组,那么声明一个数组是有意义的,var uploader = [];然后使用 uploader.push() 方法或将其定义为对象var uploader = {};然后只做uploader[i] = ...

也可以使用 a 数组执行后者,但在后一种情况下,我认为维护计数器 ( i ) 没有意义。