在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Python  HTML/ 關(guān)于深拷貝問(wèn)題

關(guān)于深拷貝問(wèn)題

為什么這個(gè)深拷貝無(wú)法得到函數(shù)func: function(){return 1}
是不是函數(shù)無(wú)法復(fù)制?

fucntion deepClone(source) {
    var targetObj = {};
    for(var keys in source) {
        if(source.hasOwnProperty(keys)) {
            if(source[keys] && typeof source[keys] === 'object') {
                targetObj[keys] = deepClone(source[keys]);
            }else{
                targetObj[keys] = source[keys];            
            }
        }
    }
    return targetObj;
}

var o1 = {
    arr: 1,
    obj: {
        key: 'value'
    },
    func: function(){
        return 1;
    }
}
var o3 = deepClone(o1);
console.log(JSON.stringify(o3));
回答
編輯回答
哎呦喂

clipboard.png

因?yàn)镴SON.stringify 會(huì)將對(duì)象中值為undefined 和 function的內(nèi)容丟掉。

如果你想讓JSON.stringify處理后的對(duì)象,保留value為function的部分,需要你顯式的增加一個(gè)replacer來(lái)處理,值為function的對(duì)象,即

JSON.stringify({a:function(){return 1}},function(k,v){
if(typeof v == 'function'){
return v.toString()
}
return v
})

這是JSON.stringify的文檔
https://developer.mozilla.org...

2018年8月6日 20:08
編輯回答
空痕

不是function不復(fù)制,是JSON.stringify無(wú)法轉(zhuǎn)化function。

o3.func()是可以執(zhí)行的喲

2017年8月17日 07:17
編輯回答
傻丟丟

這個(gè)deepClone函數(shù)并沒(méi)有對(duì)函數(shù)進(jìn)行拷貝,只是返回了它的引用

JSON.stringify()在遇到不安全的JSON值會(huì)自動(dòng)將其忽略,在數(shù)組中則會(huì)返回null(以保證單元位置不變)。

不安全的 JSON 值: undefined 、 function 、 symbol (ES6+)和包含循環(huán)引用(對(duì)象之間相互引用,形成一個(gè)無(wú)限循環(huán))的 對(duì)象 都不符合 JSON 結(jié)構(gòu)標(biāo)準(zhǔn),支持 JSON 的語(yǔ)言無(wú)法處理它們

具體可以參考這篇我的這篇文章

2017年6月4日 06:51