Я пытаюсь получить:
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;
}
}
Есть хороший заменитель?