动态,基于镜像表的实例检测

时间:2014-02-07 11:50:13

标签: javascript instanceof

我正在寻找一种测试特定对象是否属于特定实例的方法。但是,实例是在数组中定义的。因此,查找变得有点动态:

var element = document.getElementsByTagName('button').item(0);
var instances = ['Attr', 'Element'];
instances.forEach(function(instance)
{
    console.log(element instanceof instance);
});

现在,这会引发错误:

  

TypeError: Expecting a function in instanceof check, but got #<HTMLButtonElement>

好的,然后我想,在这种情况下,我可以给eval()一个机会:

console.log(element instanceof eval(instance));

哪个有效,但嘿,这是一个eval()

我希望将它包装在一个函数中,可以用在那里的任何对象上。

有没有比eval更好的方法呢?

1 个答案:

答案 0 :(得分:0)

对于你正在做的事情,你可以使用元素的nodeType:

var element = document.getElementsByTagName('button').item(0);
var instances = [1, 2]; // nodeType 1 == element, nodeType 2 == attribute
instances.forEach(function(nt)
{
    console.log(element.nodeType == nt);
});

Further infos on node types