Я использую рекурсивную функцию, основанную на for(.. in..) и hasOwnProperty для клонирования объектов, которая отлично работает в IE и FF... но не в Chrome.
При переборе членов объекта с использованием for(... in...) Firefox и Chrome дают разные результаты для hasOwnProperty, если объект является объектом DOM.
Ввод следующего в консоль Chrome по сравнению с консолью в Firebug (FF) дает разные результаты:
var t = document.createElement("table");
var tr = t.insertRow(-1);
for(var p in tr) if(tr.hasOwnProperty(p)) console.log(p);
Вывод Firefox:
конструктор
addEventListener
Вывод Chrome:
clientLeft
scrollHeight
firstElementChild
offsetParent
ch
offsetWidth
isContentEditable
hidden
previousElementSibling
parentElement
localName
children
ownerDocument< br> nodeValue
lastElementChild
rowIndex
offsetLeft
tagName
className
prefix
innerHTML
previousSibling
namespaceURI
id
childElementCount
innerText
scrollLeft
clientHeight
align
textContent
nextSibling
scrollWidth
offsetHeight
chOff
clientWidth
nodeName
стиль
lang< br> scrollTop
offsetTop
childNodes
baseURI
nextElementSibling
vAlign
sectionRowIndex
classList
title
firstChild
атрибуты
набор данных
externalText
ячейки
parentNode
clientTop
tabIndex
contentEditable
externalHTML
dir
lastChild
bgColor
nodeType
проверка орфографии
перетаскиваемый
Все дополнительные свойства, помеченные как истинные для hasOwnProeperty, вызывают отказ «бесконечно/достаточно для сбоя» в моем коде. Есть ли способ определить, является ли свойство встроенным свойством объекта DOM? Или другое решение..