我有一个上传文件的小应用程序:
<html>
<script type="text/javascript">
var upload = function(){
alert(document.getElementById('up_file').files[length]);
};
</script>
<body>
<input type='file' id='up_file' />
<input type='button' value='Submit' onclick="upload();" />
<p id="p"></p>
</body></html>
(很短)
请继续在您的代码编辑器中复制并粘贴它,然后在谷歌中打开。在你的谷歌浏览器中打开它之后,打开它的开发者工具并在它的控制台中写这个
document.getElementById('up_file').files
然后它返回
FileList{0:File, Length:1, item:function}
(请展开此对象)
现在,当我们必须上传一个文件并想要获取该文件的名称时,我们必须编写代码,document.getElementById('up_file').files[0].name
然后它返回文件名为flower.jpg
情况1
当您展开对象时,FileList
您会注意到有一个属性名称length
。现在,当您键入document.getElementById('up_file').files[length]
then 它应该返回 1 因为当您扩展FileList
对象时,您已经看到它们的属性length
是 1 但是当我们编写document.getElementById('up_file').files[length]
它时意外返回另一个对象然后 1 !该对象是:
File {webkitRelativePath: "", lastModifiedDate: Fri Aug 30 2013 13:42:08 GMT+0530 (India Standard Time), name: "Creek.jpg", type: "image/jpeg", size: 264409…}
如果我们写document.getElementById('up_file').files[length].name
它,它会返回与document.getElementById('up_file').files[0].name
该文件名相同的东西!
问题:
1)为什么javascript在我们写的时候会返回一个包含文件数长度的对象document.getElementById('up_file').files[length]
?
案例2
在该FileList
对象中,在您展开它之前还有另一个属性名称,但是当item
您展开对象时FileList
,那里没有名称为是,我不确定,50%)。item
FileList
item
看,typeof __proto__
是一个对象,然后可以使用点(。)国家访问项目,但它总是undefined
在我写时返回__proto__.item
。我不打算进一步解释,因为我的意思是……
问题:
1) 这个项目是什么?
2}如何获取__proto__
对象的属性?
好吧,实际上我很困惑,当我在互联网上搜索时,我变得更加困惑!你可能不喜欢这个问题,因为它......你知道有点混乱
感谢您的所有回答。