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

时间:2009-11-19 02:17:51

标签: javascript reflection canvas

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

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

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

3 个答案:

答案 0 :(得分:30)

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

答案 1 :(得分:11)

如果需要考虑跨窗/框架兼容性,可以查看nodeName

var isImg = (element.nodeName.toLowerCase() === 'img');

答案 2 :(得分:2)

function isCanvas(i) {
    return i instanceof HTMLCanvasElement;
}