У меня есть этот объект переходящую функцию:JavaScript: Deep Copy Image() объекта
function merge(obj1, obj2)
{
var result = {};
for(var prop in obj1)
{
if(obj2.hasOwnProperty(prop))
{
if('object' === typeof obj1[prop] && 'object' === typeof obj2[prop])
{
result[prop] = merge(obj1[prop], obj2[prop]);
}
else
{
result[prop] = obj2[prop];
}
}
else
{
result[prop] = obj1[prop];
}
}
return result;
};
Цель этой функции заключается в объединении двух объектов в один, перекрывая значения obj1 с теми obj2, если существует ,
Он отлично работает с большинством объектов, однако, когда я пытаюсь использовать его для слияния двух объектов Image()
, меня бросают в бесконечный цикл. Например:
merge(new Image(), new Image())
результатов в:
Uncaught RangeError: Maximum call stack size exceeded
Я думаю, что это что-то делать с событиями объекта, но я не уверен. Почему вы думаете, что это происходит, и как можно улучшить эту функцию, чтобы исправить эту проблему?
Что вы пытаетесь достичь путем слияния двух 'Image' объектов? –
Почему бы не использовать [cloneNode] (https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode)? –
@MattBall Я пытаюсь объединить два объекта, у которых есть объекты «Image» как одно из их свойств –