我正在寻找一种测试特定对象是否属于特定实例的方法。但是,实例是在数组中定义的。因此,查找变得有点动态:
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更好的方法呢?
答案 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);
});