第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Object.assign()遇到的問題。

Object.assign()遇到的問題。

Object.assign(target, ...sources)假如源對象的屬性值是一個指向?qū)ο蟮囊?,它也只拷貝那個引用值。例如:var obj1 = {a: 20,b: {c: 2}};var copy = Object.assign({}, obj1);此時,obj1.b 和 copy.b指向的還是一個同一個對象。針對這種情況,有沒有什么比較好的解決方案?
查看完整描述

1 回答

?
夢里花落0921

TA貢獻1772條經(jīng)驗 獲得超6個贊

Object.assign() 只是一級屬性復(fù)制,比淺拷貝多深拷貝了一層


標(biāo)準(zhǔn)(安全)JSON格式的對象深拷貝可以用這個:const obj1 = JSON.parse(JSON.stringify(obj));


我從《你不知道的 JavaScript》一書看到,工具函數(shù) JSON.stringify(..) 在將JSON對象序列化為字符串時也用到了 ToString 。請注意, JSON 字符串化并非嚴(yán)格意義上的強制類型轉(zhuǎn)換,因為其中也涉及 ToString 的相 關(guān)規(guī)則。 

對大多數(shù)簡單值來說, JSON 字符串化和 果總是字符串:toString()的效果基本相同,只不過序列化的結(jié)


JSON.stringify( 42 ); // "42" 

JSON.stringify( "42" ); // ""42""(含有雙引號的字符串)

JSON.stringify( null ); // "null" 

JSON.stringify( true ); // "true" 

所有 安全的 JSON 值 JSON-safe)都可以使用 JSON.stringify(..) 字符串化。 安全的 JSON 值是指能夠呈現(xiàn)為有效 JSON 格式的值。


下面敲黑板劃重點:


為了簡單起見, 我們來看看什么是 不安全的 JSON 值 。 undefined 、 function 、 symbol (ES6+)和包含循環(huán)引用(對象之間相互引用,形成一個無限循環(huán))的 對象 都不符合 JSON 結(jié)構(gòu)標(biāo)準(zhǔn),支持 JSON 的語言無法處理它們。


JSON.stringify(..) 在對象中遇到 undefined 、 function 和 symbol 時會自動將其忽略, 在數(shù)組中則會返回 null (以保證單元位置不變)。


例如:


JSON.stringify( undefined ); 

JSON.stringify( function(){} ); 

JSON.stringify( [1,undefined,function(){},4] ); 

JSON.stringify({ a:2, b:function(){} } ); // undefined // undefined 

// "[1,null,null,4]" // "{"a":2}" 

對包含循環(huán)引用的對象執(zhí)行 JSON.stringify(..) 會出錯。


具體的深拷貝我們可以參考一下 jQuery 的實現(xiàn)。


具體細節(jié)實現(xiàn)可以參考這篇文章。

JavaScript專題之從零實現(xiàn)jQuery的extend


查看完整回答
反對 回復(fù) 2019-02-21
  • 1 回答
  • 0 關(guān)注
  • 592 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號