¿Cómo puedo saber si un object JavaScript es una image o un canvas?

Tengo una class con una propiedad que puede ser una Imagen (es decir, un elemento IMG) o un Lienzo. Cuando lo serializo en JSON, necesito convertir esto a una cadena de text. Si es un canvas, entonces puedo llamar a Canvas # toDataURL. Pero si se trata de una image, primero tengo que dibujarla en un canvas con Canvas # drawImage, luego serializar ese canvas con toDataURL.

Entonces, ¿cómo puedo determinar si el object es un canvas o una image? (Como Canvas # drawImage es capaz de aceptar objects de Imagen u Canvas como argumento, debe haber una forma).

He visto que algunos progtwigdores testingn la existencia de ciertas properties o funciones para determinar la class, pero me preguntaba si existe una forma más inteligente que no se rompa si cambia la API presentada por estos objects.

2 Solutions collect form web for “¿Cómo puedo saber si un object JavaScript es una image o un canvas?”

function isImage(i) { return i instanceof HTMLImageElement; } 

Si la compatibilidad de windows cruzadas / frameworks es una preocupación, puede verificar nodeName :

 var isImg = (element.nodeName.toLowerCase() === 'img'); 
Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.