如何判断javascript对象是图像还是画布?

如何判断javascript对象是图像还是画布?,javascript,reflection,canvas,Javascript,Reflection,Canvas,我有一个类,它的属性可以是图像(即IMG元素)或画布。当我将其序列化为JSON时,我需要将其转换为文本字符串。如果是画布,那么我可以调用Canvas#toDataURL。但如果它是一个图像,我首先需要用Canvas#drawImage将其绘制到画布上,然后用toDataURL序列化该画布 那么如何确定对象是画布还是图像呢?(由于Canvas#drawImage能够接受图像或Canvas对象作为参数,因此必须有一种方法。) 我看到一些程序员测试某些属性或函数是否存在以确定类,但我想知道是否有一种更

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

那么如何确定对象是画布还是图像呢?(由于Canvas#drawImage能够接受图像或Canvas对象作为参数,因此必须有一种方法。)


我看到一些程序员测试某些属性或函数是否存在以确定类,但我想知道是否有一种更聪明的方法,在这些对象所呈现的API发生变化时不会中断。如果跨窗口/帧兼容性是一个问题,您可以检查:

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

非常感谢。我是一个被宠坏了的Java程序员,错过了他的反思。这对用new Image()创建的图像有效吗?并且还没有插入DOM中?@jayarjo:当然<代码>(新图像()).nodeName.toLowerCase()产生
“img”
。一句解释?就一个?请
var isImg = (element.nodeName.toLowerCase() === 'img');
function isCanvas(i) {
    return i instanceof HTMLCanvasElement;
}