我有一个函数来处理一个对象,该对象包含文件类型为“ upload”的成员。我想检测到这一事实,以便可以忽略它并跳过所有此类对象。
我在控制台中尝试了一堆东西,但是似乎什么都没有返回“ 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
很显然,我对本机类型和原型如何在Javascript中工作缺乏基本的了解。
答案 0 :(得分:3)
您可以使用instanceof
关键字进行检查。
if (values.avatar.upload instanceof File)
// yes, it's a File type.
else
// no, it's not.
答案 1 :(得分:1)
检查
values.avatar.upload instanceof File
答案 2 :(得分:-1)
您也可以通过其原型进行测试:
if(values.avatar.upload.prototype === File.prototype) {
// true
} else {
// false
}
例如,您可以使用:
File.prototype.isPrototypeOf(values.avatar.upload)
例如以下内容将返回true:
var file = new File([""], 'text.txt');
console.log(File.prototype.isPrototypeOf(file));