2014-02-07 20 views
0

我正在尋找一種方法來測試某個對象是否是特定實例。實例雖然在數組中定義。因此,查找變成一種動態的:動態,基於鏡像表的實例檢測

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

對於你在做什麼,你可以通過元素的節點類型去:

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

+0

*我期待在一個函數來包裝這個,可能對任何對象使用都出來了那裏。*這不僅僅意味着DOM節點。 – jolt