五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

深拷貝和淺拷貝

2022-10-21 14:59 作者:對(duì)白淺淺  | 我要投稿


// a = 基礎(chǔ)數(shù)據(jù)類(lèi)型 或 復(fù)雜數(shù)據(jù)類(lèi)型

// b = a


// 基本數(shù)據(jù)類(lèi)型 ?在賦值的時(shí)候值拷貝

// 復(fù)雜數(shù)據(jù)類(lèi)型 ?棧內(nèi)存中存地址,堆內(nèi)存中存真實(shí)的值,賦值后兩個(gè)變量指向同一塊內(nèi)存空間(或者說(shuō)只復(fù)制了指向某個(gè)對(duì)象的指針) ?修改被賦值的變量,原始變量也會(huì)跟著改變


// 深拷貝

// 1.Objecet.assign()

// 可以對(duì)非嵌套對(duì)象進(jìn)行深拷貝的方法,如果對(duì)象中出現(xiàn)嵌套情況,那么其他被嵌套對(duì)象的行為就成了普通的淺拷貝。


// 2.JSON.stringify()/JSON.parse()

// 對(duì)于 undefined、任意的函數(shù)以及 symbol 三個(gè)特殊的值分別作為對(duì)象屬性的值、數(shù)組元素、單獨(dú)的值時(shí) JSON.stringify()將返回不同的結(jié)果。

const data = {

? ? a: "aaa",

? ? b: undefined,

? ? c: Symbol("dd"),

? ? fn: function() {

? ? ? ? return true;

? ? }

? ?

};

? ?

JSON.stringify(data); // 輸出: "{"a":"aaa"}"


// 假設(shè) undefined、任意的函數(shù)以及 symbol 值作為數(shù)組元素會(huì)是怎樣呢

JSON.stringify(["aaa", undefined, function aa() {


? ? return true

? ?

}, Symbol('dd')]) // 輸出:"["aaa",null,null,null]"


// 單獨(dú)序列化這些值會(huì)是什么樣的結(jié)果呢

JSON.stringify(function a (){console.log('a')})

// undefined


JSON.stringify(undefined)

// undefined


JSON.stringify(Symbol('dd'))

// undefined


// 3.用遞歸的方式進(jìn)行深拷貝 ? (對(duì)象深拷貝)

function deepClone(dest,src){ ? ? ?//dest為目標(biāo)對(duì)象 ?src為源對(duì)象

? ? var dest=dest||{}

? ? for(var key in src){

? ? ? ? if(typeof src[key]==="object"){ ? ?//typeof[] 和 typeof{} 結(jié)果都是objct

? ? ? ? ? ? //如果對(duì)象的屬性又是對(duì)象

? ? ? ? ? ? dest[key]=(src[key].constructor===Array)?[]:{}

? ? ? ? ? ? deepClone(dest[key],src[key])

? ? ? ? }else{

? ? ? ? ? ? dest[key]=src[key]

? ? ? ? }

? ? }

? ? return dest

}

var a={

? ? name:"Bob",

? ? age:16,

? ? parents:{

? ? ? ? father:"Jack",

? ? ? ? mother:"Marry"

? ? }

}

var b=deepClone({},a)

console.log(a)

console.log(b)

// 4.引入函數(shù)庫(kù) lodash,該函數(shù)庫(kù)也有提供 _.cloneDeep()

var _ = require('lodash');

var obj1 = {

?a: 1,

?b: { f: { g: 1 } },

?c: [1, 2, 3]

};

var obj2 = _.cloneDeep(obj1);

console.log(obj1.b.f === obj2.b.f);


// 淺拷貝

// 1.Objecet.assign()

// 可以對(duì)非嵌套對(duì)象進(jìn)行深拷貝的方法,如果對(duì)象中出現(xiàn)嵌套情況,那么其他被嵌套對(duì)象的行為就成了普通的淺拷貝。

// 2.Array.concat() //數(shù)組連接

// 3.Array.slice() ?//數(shù)組切片



深拷貝和淺拷貝的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
祁连县| 灌南县| 翼城县| 陕西省| 黔西县| 海门市| 平邑县| 绵竹市| 东乌珠穆沁旗| 钦州市| 庄河市| 漳平市| 萨迦县| 香港| 黔西| 会昌县| 四平市| 磴口县| 台中县| 建瓯市| 浦县| 兴宁市| 寿宁县| 北京市| 江城| 大城县| 江都市| 永平县| 嘉定区| 泰宁县| 澄迈县| 自治县| 阆中市| 南川市| 宝丰县| 神木县| 遵义市| 临邑县| 密山市| 晋中市| 景洪市|