如何判断javascript对象是Image还是Canvas?

Pau*_*och 16 javascript reflection canvas

我有一个具有属性的类,可以是Image(即IMG元素)或Canvas.当我将它序列化为JSON时,我需要将其转换为文本字符串.如果它是Canvas,那么我可以调用Canvas#toDataURL.但如果它是一个Image,我首先需要使用Canvas#drawImage将其绘制到Canvas,然后使用toDataURL序列化该画布.

那么如何确定对象是Canvas还是Image?(因为Canvas#drawImage能够接受Image或Canvas对象作为参数,所以必须有办法.)

我已经看到一些程序员测试某些属性或函数是否存在以确定类,但我想知道如果这些对象提供的API发生变化,是否有更智能的方法不会中断.

Jam*_*mes 31

function isImage(i) {
    return i instanceof HTMLImageElement;
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.我是一个被宠坏的Java程序员,他错过了他的反思. (4认同)

Cre*_*esh 11

如果需要考虑跨窗口/帧兼容性,可以检查nodeName:

var isImg = (element.nodeName.toLowerCase() === 'img');
Run Code Online (Sandbox Code Playgroud)


小智 6

function isCanvas(i) {
    return i instanceof HTMLCanvasElement;
}
Run Code Online (Sandbox Code Playgroud)

  • 一句话解释?只有一个?请? (3认同)