ファイルをアップロードする小さなアプリがあります。
<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>
(非常に短い)
コード エディタでこれをコピー アンド ペーストしてから、Google で開いてください。これをGoogleブラウザで開いた後、開発者ツールを開き、これをコンソールに書き込みます
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]
すると 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
別のプロパティ名がありますが、オブジェクトを展開すると、その名前のプロパティはありませんが、オブジェクトをさらに展開すると、それがわかります(これはコンストラクターである可能性がありますよくわかりませんが、50%)。item
FileList
item
FileList
item
参照してください、オブジェクトの場合、アイテムは dot(.) 国家を使用してアクセスできますが、書き込み時typeof __proto__
に常に返されます。的外れなのでこれ以上は説明しませんが…undefined
__proto__.item
質問:
1) このアイテムは何ですか?
2}__proto__
オブジェクトのプロパティを取得する方法は?
実は私はとても混乱していて、インターネットで検索すると、さらに困惑してしまいます! あなたはこの質問を嫌うかもしれません...少し紛らわしいからです
ご回答ありがとうございます。