如何判断 Javascript 对象是否是文件?

Geo*_*itt 5 javascript prototype file

我有一个函数来操作一个对象,该对象包含一个 File 类型的“上传”成员。我想检测这个事实,以便我可以忽略它并跳过这种类型的所有对象。

我在控制台中尝试了很多东西,但似乎没有任何东西返回“true”。这是我从控制台断点内部进行的徒劳尝试的记录:

> values.avatar
{upload: File}
> values.avatar.upload
File {name: "29_Drawing Hands by Escher.jpg", lastModified: 1446580115000, lastModifiedDate: Tue Nov 03 2015 14:48:35 GMT-0500 (Eastern Standard Time), webkitRelativePath: "", size: 1314300, …}
> values.avatar.upload.isPrototypeOf(File)
false
> File
ƒ File() { [native code] }
> File.prototype
File {constructor: ƒ, …}
values.avatar.upload.isPrototypeOf(File.prototype)
false
> values.avatar.upload.prototype 
undefined
> File.isPrototypeOf
ƒ isPrototypeOf() { [native code] }
> File
ƒ File() { [native code] }
> values.avatar
{upload: File}
> File
ƒ File() { [native code] }
> File.__proto__
ƒ Blob() { [native code] }
> values.avatar.upload.__proto__
File {constructor: ƒ, …}
values.avatar.upload.isPrototypeOf(File.__proto__)
false
> values.avatar.upload.isPrototypeOf(Blob.__proto__)
false
Run Code Online (Sandbox Code Playgroud)

显然,我对原生类型和原型在 Javascript 中的工作方式缺乏基本的了解。

Pra*_*man 7

您可以使用instanceof关键字检查它。

if (values.avatar.upload instanceof File)
  // yes, it's a File type.
else
  // no, it's not.
Run Code Online (Sandbox Code Playgroud)