我想要得到:
document.createElement('div') //=> true
{tagName: 'foobar something'} //=> false
在我的脚本中,我以前只使用这个,因为我从来不需要将tagName
作为属性:
if (!object.tagName) throw ...;
所以对于第二个对象,我想到了以下快速解决方案——大部分情况下都有效。 ;)
问题是,它依赖于浏览器执行只读属性的规则,而并非所有浏览器都会这样做。
function isDOM(obj) {
var tag = obj.tagName;
try {
obj.tagName = ''; // Read-only for DOM, should throw exception
obj.tagName = tag; // Restore for normal objects
return false;
} catch (e) {
return true;
}
}
有没有一个好的替代品?