Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于镜像表的动态实例检测_Javascript_Instanceof - Fatal编程技术网

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

Javascript 基于镜像表的动态实例检测,javascript,instanceof,Javascript,Instanceof,我正在寻找一种方法来测试某个对象是否属于特定实例。不过,实例是在数组中定义的。因此,查找变得动态: var element = document.getElementsByTagName('button').item(0); var instances = ['Attr', 'Element']; instances.forEach(function(instance) { console.log(element instanceof instance); }); 现在,这会抛出一个错

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

var element = document.getElementsByTagName('button').item(0);
var instances = ['Attr', 'Element'];
instances.forEach(function(instance)
{
    console.log(element instanceof instance);
});
现在,这会抛出一个错误:

TypeError:在check的instanceof中需要一个函数,但得到了

好的,然后我想,在这种情况下我可以试一试:

console.log(element instanceof eval(instance));
这和预期的一样,但是嘿,这是一个
eval()

我想把它包装成一个函数,可以用在任何对象上


有比eval更好的方法吗?

对于您正在做的事情,您可以使用元素的节点类型:

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);
});

我希望将其包装成一个函数,可以用于任何对象。它不仅仅适用于DOM节点。