У меня есть функция, которая манипулирует объектом, содержащим член "загрузки" типа 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
Очевидно, мне не хватает фундаментального понимания того, как нативные типы и прототипы работают в Javascript.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


чек об оплате
values.avatar.upload instanceof File
Вы также можете протестировать его прототип:
if (values.avatar.upload.prototype === File.prototype) {
// true
} else {
// false
}
Например, вы можете использовать:
File.prototype.isPrototypeOf(values.avatar.upload)
Например. следующее вернет true:
var file = new File([""], 'text.txt');
console.info(File.prototype.isPrototypeOf(file));экземпляры не имеют свойства prototype. Это совершенно неправильно.
Я не вижу экземпляра OP.
Второй фрагмент функционально не эквивалентен первому фрагменту, но более каноничным ответом является values.avatar.upload instanceof File
второй, например, как вы прокомментировали.
...but the more canonical answer is - Я пытался придерживаться ОП.
Позвольте мне сделать это как можно более ясным для вас. File.prototype.isPrototypeOf(values.avatar.upload) правильно. Это эквивалентно values.avatar.upload instanceof File, что намного легче понять. values.avatar.upload.prototype === File.prototype это неправильно. Нет смысла даже оставлять это в вашем ответе.
Извините, но мне непонятно ваше утверждение. Оба помещены в мой ответ для разных вариантов использования. Первый предназначен для простого объекта, а другой, например.
Давайте продолжить обсуждение в чате.
Попробуйте
values.avatar.upload instanceof File