Как я могу определить, является ли объект JavaScript изображением или холстом? - PullRequest
16 голосов
/ 19 ноября 2009

У меня есть класс со свойством, которое может быть изображением (то есть элементом IMG) или Canvas. Когда я сериализую его в JSON, мне нужно преобразовать его в текстовую строку. Если это Canvas, я могу вызвать Canvas # toDataURL. Но если это изображение, мне сначала нужно нарисовать его на холсте с помощью Canvas # drawImage, а затем сериализовать этот холст с помощью toDataURL.

Так как мне определить, является ли объект холстом или изображением? (Поскольку Canvas # drawImage способен принимать объекты Image или Canvas в качестве аргумента, должен быть способ.)

Я видел, что некоторые программисты проверяют наличие определенных свойств или функций для определения класса, но мне было интересно, есть ли более разумный способ, который не сломается, если API, представленный этими объектами, изменится.

Ответы [ 2 ]

30 голосов
/ 19 ноября 2009
function isImage(i) {
    return i instanceof HTMLImageElement;
}
11 голосов
/ 19 ноября 2009

Если существует проблема совместимости между окнами и фреймами, вы можете проверить nodeName:

var isImg = (element.nodeName.toLowerCase() === 'img');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...