簡體   English   中英

JavaScript:深度復制Image()對象

[英]JavaScript: Deep Copy Image() Object

我有此對象合並功能:

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;
};

此功能的目的是將兩個對象合並為一個,如果存在,則用obj2的值覆蓋obj1的值。

它適用於大多數對象,但是當我嘗試使用它合並兩個Image()對象時,我陷入了無限循環。 例如:

merge(new Image(), new Image())

結果是:

Uncaught RangeError: Maximum call stack size exceeded

我認為這與對象的事件有關,但我不確定。 您為什么認為這是這種情況,如何改進此功能以解決此問題?

首先是null是一個對象,因此您要為所有null調用merge。

第二有財產

ownerDocument 

所以您正在遍歷...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM