亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Javascript和jQuery的深淺拷貝詳解

 更新時(shí)間:2022年02月22日 15:35:37   作者:王昭沒(méi)有君啊  
這篇文章主要為大家詳細(xì)介紹了Javascript和jQuery的深淺拷貝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

深淺拷貝在引用數(shù)據(jù)類(lèi)型(數(shù)組對(duì)象)復(fù)制過(guò)程中產(chǎn)生的問(wèn)題。

JS的淺拷貝

直接復(fù)制拷貝的是數(shù)組/對(duì)象的內(nèi)存地址,本質(zhì)上是一個(gè)引用數(shù)據(jù)類(lèi)型,所有的變量存儲(chǔ)的是相同的內(nèi)存地址,操作的是同一個(gè)存儲(chǔ)空間,任意一個(gè)變量的操作,其他變量都會(huì)受影響。如下所示:

const arr1 = ['北京', '上海', '廣州', '深圳', '武漢'];
const arr2 = arr1;
console.log(arr1);
console.log(arr2);

變量arr1中存儲(chǔ)的是數(shù)組的內(nèi)存地址,淺拷貝是將變量arr1中存儲(chǔ)的數(shù)組的內(nèi)存地址賦值給變量arr2存儲(chǔ),也就是變量arr2和變量arr1存儲(chǔ)的是相同的內(nèi)存地址,通過(guò)其中一個(gè)變量操作數(shù)組,另一個(gè)變量也受影響,將arr1里的北京改為天津,那么arr2里的北京也就變成了天津。

JS的深拷貝

復(fù)制拷貝的是數(shù)組/對(duì)象存儲(chǔ)的數(shù)值數(shù)據(jù),本質(zhì)上執(zhí)行幾次深拷貝就有幾個(gè)獨(dú)立的引用數(shù)據(jù)類(lèi)型,存儲(chǔ)的是不同的內(nèi)存地址,操作的是不同的存儲(chǔ)空間,一個(gè)變量操作引用數(shù)據(jù)類(lèi)型對(duì)其他變量沒(méi)有影響,如下所示:

const arr1 = ['北京', '上海', '廣州', '深圳', '武漢'];
//創(chuàng)建一個(gè)新的引用數(shù)據(jù)類(lèi)型
const arr3 = [];
//循環(huán)遍歷arr1將arr1中的存儲(chǔ)獲取之后,存儲(chǔ)到arr3中
arr1.forEach(item => {
   arr3.push( item );
})

arr3是新的內(nèi)存地址,只是存儲(chǔ)的數(shù)據(jù)數(shù)值和arr1相同,arr1的操作是arr1內(nèi)存地址對(duì)應(yīng)的存儲(chǔ)空間,和arr3的存儲(chǔ)空間沒(méi)有關(guān)系,也沒(méi)有影響。arr1里的上海改為成都,arr3里面的數(shù)值 不發(fā)生任何變化,所以,修改arr3里的數(shù)據(jù),arr1里也同樣沒(méi)有變化。

jQuery的深淺拷貝

jQuery中的深淺拷貝比較特殊

1、jQuery中沒(méi)有封裝傳統(tǒng)意義上的淺拷貝的函數(shù)

2、jQuery中封裝的$.extend()默認(rèn)執(zhí)行的就是傳統(tǒng)意義上的深拷貝

3、jQuery中的所謂的深淺拷貝,指的是 一維數(shù)據(jù)  深拷貝,二維數(shù)據(jù)  淺拷貝

4、jQuery中深淺拷貝的語(yǔ)法形式

const 變量 = 數(shù)組/對(duì)象;
$.extend(變量 , 原始數(shù)組/對(duì)象);
//淺拷貝,一維數(shù)據(jù) 深拷貝,多維數(shù)據(jù)  淺拷貝
$.extend(true, 變量, 原始數(shù)組/對(duì)象);
//深拷貝,一維數(shù)據(jù) 多維數(shù)據(jù) 都是深拷貝

如下所示:

//原始數(shù)組
const arr1 = ['北京' , '上海' , '廣州' , '深圳' , '武漢' , [100,200,300,400] , {name:'王昭沒(méi)有君啊' , age:22 , sex:'男'} ];
//jQuery的淺拷貝
//創(chuàng)建一個(gè)arr2
const arr2 = [];
//將arr1中的數(shù)據(jù)按照jQuery的淺拷貝語(yǔ)法復(fù)制到arr2中
//執(zhí)行的是jQuery的淺拷貝
$.extend( arr2 , arr1 );
//創(chuàng)建一個(gè)arr2
const arr3 = [];
//將arr1中的數(shù)據(jù)按照jQuery的深拷貝語(yǔ)法復(fù)制到arr3中
//執(zhí)行的是jQuery的深拷貝
$.extend(true, arr3, arr1);

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!      

相關(guān)文章

  • javascript 新聞標(biāo)題靜態(tài)分頁(yè)代碼 (無(wú)刷新)

    javascript 新聞標(biāo)題靜態(tài)分頁(yè)代碼 (無(wú)刷新)

    一個(gè)模板,從數(shù)據(jù)庫(kù)取n條記錄,生成靜態(tài)。做單頁(yè)面的靜態(tài)化,索引頁(yè)面是用JS對(duì)數(shù)組進(jìn)行組合的。
    2010-03-03
  • JavaScript使用Promise實(shí)現(xiàn)并發(fā)請(qǐng)求數(shù)限制

    JavaScript使用Promise實(shí)現(xiàn)并發(fā)請(qǐng)求數(shù)限制

    本文主要介紹了JavaScript使用Promise實(shí)現(xiàn)并發(fā)請(qǐng)求數(shù)限制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • javascript 上下banner替換具體實(shí)現(xiàn)

    javascript 上下banner替換具體實(shí)現(xiàn)

    這篇文章介紹了javascript 上下banner替換具體實(shí)現(xiàn),有需要的朋友可以參考一下
    2013-11-11
  • JS簡(jiǎn)單實(shí)現(xiàn)自定義右鍵菜單實(shí)例

    JS簡(jiǎn)單實(shí)現(xiàn)自定義右鍵菜單實(shí)例

    本篇文章主要介紹了JS簡(jiǎn)單實(shí)現(xiàn)自定義右鍵菜單實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • javascript實(shí)時(shí)顯示北京時(shí)間的方法

    javascript實(shí)時(shí)顯示北京時(shí)間的方法

    這篇文章主要介紹了javascript實(shí)時(shí)顯示北京時(shí)間的方法,涉及javascript操作時(shí)間顯示的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • 一文詳解JavaScript中的replace()函數(shù)

    一文詳解JavaScript中的replace()函數(shù)

    replace方法的語(yǔ)法是stringObj.replace(rgExp, replaceText),其中stringObj是字符串(string),下面這篇文章主要給大家介紹了關(guān)于JavaScript中replace()函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • Javascript類(lèi)型系統(tǒng)之undefined和null淺析

    Javascript類(lèi)型系統(tǒng)之undefined和null淺析

    這篇文章主要介紹了Javascript類(lèi)型系統(tǒng)之undefined和null的知識(shí),通過(guò)本文還簡(jiǎn)單給大家介紹了javascript中null和undefined的區(qū)別的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • Javascript insertAfter() 實(shí)現(xiàn)函數(shù)代碼

    Javascript insertAfter() 實(shí)現(xiàn)函數(shù)代碼

    DOM沒(méi)有提供insertAfter()方法,我們可以自己擴(kuò)展下。
    2011-10-10
  • Bootstrap圖片輪播組件Carousel使用方法詳解

    Bootstrap圖片輪播組件Carousel使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Bootstrap圖片輪播組件Carousel使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 深入了解JavaScript代碼覆蓋

    深入了解JavaScript代碼覆蓋

    這篇文章主要介紹了深入了解JavaScript代碼覆蓋 ,代碼覆蓋提供有關(guān)是否以及可選地應(yīng)用程序的某些部分被執(zhí)行的頻率的信息。它通常用于判定一個(gè)測(cè)試套件執(zhí)行特定代碼庫(kù)的全面程度。,需要的朋友可以參考下
    2019-06-06

最新評(píng)論