我试图得到:
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;
  }
}
有什么好的替代品吗?