国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JavaScript深淺拷貝的幾種方式

這篇具有很好參考價值的文章主要介紹了JavaScript深淺拷貝的幾種方式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


前言

深淺拷貝主要是針對于引用類型而言的

深拷貝

1. JSON.parse(JSON.strigify(Str))

   序列化的作用是存儲(對象本身存儲的只是一個地址映射,如果斷電,對象將不復(fù)存在,
   因此需將對象的內(nèi)容轉(zhuǎn)換成字符串的形式再保存在磁盤上 ).

   傳輸(例如 如果請求的Content-Type 是 application/x-www-form-urlencoded,
   則前端這邊需要使用qs.stringify(data)來序列化參數(shù)再傳給后端,否則后端接受不到;

JSON.stringify()
該方法用于將一個字轉(zhuǎn)換為JSON字符串,該字符串符合JSON格式,并且可以被JSON.parse()方法還原。

  • 對于原始類型的字符串,轉(zhuǎn)換結(jié)果會帶雙引號
  • 如果要轉(zhuǎn)換的對象的屬性是undefined,函數(shù)或xml對象,該屬性會被JSON.stringify()過濾
  • 如果要轉(zhuǎn)換的數(shù)組中有undefined和函數(shù),他們都會轉(zhuǎn)換為null
  • 正則對象會被轉(zhuǎn)換成空對象
  • 會忽略對象的不可遍歷的屬性
  • JSON.stringify()方法還可以接受一個數(shù)組,作為第二個參數(shù),指定參數(shù)對象的哪些屬性需要轉(zhuǎn)成字符串,第二個參數(shù)還可以是一個函數(shù),用來更改JSON.stringify()的返回值。
  • JSON.stringify()還可以接受第三個參數(shù),用于增加返回的 JSON 字符串的可讀性。比如加入‘\t’
  • 如果參數(shù)對象有自定義的toJSON()方法,那么JSON.stringify()會使用這個方法的返回值作為參數(shù),而忽略原對象的其他屬性。

JSON.parse()

  • JSON.parse()方法用于將 JSON 字符串轉(zhuǎn)換成對應(yīng)的值。
  • 如果傳入的字符串不是有效的 JSON 格式,JSON.parse()方法將報(bào)錯。
  • JSON.parse()方法可以接受一個處理函數(shù),作為第二個參數(shù),用法與JSON.stringify()方法類似

2. lodash.deepclone

3. structuredClone

const original = { name: "MDN" };
original.itself = original;

// Clone it
const clone = structuredClone(original);

淺拷貝

let arr = [{name:'bruce'},1,2,3]

let newArr = arr.slice()
// 由于數(shù)組內(nèi)部屬性值為引用對象,因此使用slice和concat對對象數(shù)組的拷貝,整個拷貝還是淺拷貝,
// 拷貝之后數(shù)組各個值的指針還是指向相同的存儲地址。

let newArr2 = [...arr]

Object.assign()

總結(jié)

以上就是今天的內(nèi)容了,JavaScript深淺拷貝的幾種方式文章來源地址http://www.zghlxwxcb.cn/news/detail-805596.html

到了這里,關(guān)于JavaScript深淺拷貝的幾種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue深拷貝的幾種實(shí)現(xiàn)方式

    1、通過遞歸方式實(shí)現(xiàn)深拷貝 比較全面的深拷貝,缺點(diǎn)是較為繁瑣 2、JSON.parse(JSON.stringify(obj)) 滿足一般使用場景,但無法實(shí)現(xiàn)對象中方法(function)的深拷貝 3、jQuery的extend方法實(shí)現(xiàn)深拷貝 4、Object.assign(obj1, obj2) 只有一級屬性為深拷貝,二級屬性后就是淺拷貝 5、擴(kuò)展運(yùn)算符 只有

    2024年02月09日
    瀏覽(21)
  • JS實(shí)現(xiàn)深拷貝的幾種方法

    這是最簡單的方法。 通過遞歸的方式深度遍歷對象,將每個屬性的值進(jìn)行復(fù)制。需要處理被復(fù)制對象為值類型的情況以及屬性值中包含對象的情況。需要注意的是,為了防止循環(huán)引用導(dǎo)致死循環(huán),需要記錄已經(jīng)遍歷過的對象。 Lodash Lodash 是一個一致性、模塊化、高性能的 J

    2024年02月11日
    瀏覽(24)
  • 記錄一下C#深拷貝的幾種方式

    記錄一下C#深拷貝的幾種方式

    一、C#中預(yù)定義數(shù)據(jù)類型 ? ? ? ? 1》值類型 ? ? ? ? ?2》引用類型 兩種類型的不同點(diǎn): ? ? ? ?概念: 值類型直接存儲其值,而引用類型存儲對值的引用 ? ? ? ?存儲: 值類型存儲在堆棧 (stack) 上,而引用類型存儲在托管堆上(managed heap)。 當(dāng)使用值類型,進(jìn)行賦值的

    2023年04月08日
    瀏覽(47)
  • JavaScript深拷貝(js深拷貝,JavaScript遞歸函數(shù),實(shí)現(xiàn)深拷貝)

    JavaScript深拷貝(js深拷貝,JavaScript遞歸函數(shù),實(shí)現(xiàn)深拷貝)

    簡述:JavaScript的深拷貝和淺拷貝大家都比較熟悉,今天來分享下深拷貝,就是使用該函數(shù)時,會復(fù)制拷貝一份該數(shù)據(jù),修改該數(shù)據(jù)屬性,不會改變原有數(shù)據(jù),就是把復(fù)制的對象所引用的對象全都復(fù)制了一遍,具體實(shí)現(xiàn)如下; 1、定義拷貝對象; 2、定義遞歸函數(shù)deepClone(),實(shí)現(xiàn)

    2024年02月15日
    瀏覽(21)
  • java中關(guān)于深拷貝的幾種方式

    在java里,當(dāng)我們需要拷貝一個對象時,有兩種類型的拷貝: 淺拷貝與深拷貝。 淺拷貝只是拷貝了源對象的地址,所以源對象的值發(fā)生變化時,拷貝對象的值也會發(fā)生變化。 深拷貝則是拷貝了源對象的所有值,所以即使源對象的值發(fā)生變化時,拷貝對象的值也不會改變。 O

    2024年02月11日
    瀏覽(16)
  • JavaScript頁面刷新的幾種方法

    頁面刷新是Web開發(fā)中常見的需求,它可以用于更新頁面內(nèi)容、重新加載數(shù)據(jù)或者重置用戶界面。本文將介紹幾種常見的JavaScript頁面刷新方法,并提供相應(yīng)的源代碼示例。 使用location.reload()方法刷新頁面: location.reload()方法用于重新加載當(dāng)前頁面。它會向服務(wù)器發(fā)送請求,獲取

    2024年02月03日
    瀏覽(22)
  • JavaScript中數(shù)據(jù)過濾的幾種方法

    JavaScript是一種廣泛使用的編程語言,它提供了多種方法來對數(shù)據(jù)進(jìn)行過濾。在本文中,我們將介紹JavaScript中常見的幾種數(shù)據(jù)過濾方法,并提供相應(yīng)的示例。 filter()方法是JavaScript數(shù)組對象的一個內(nèi)置方法,它創(chuàng)建一個新數(shù)組,其中包含符合指定條件的所有元素。該方法接受一

    2024年02月04日
    瀏覽(20)
  • JavaScript中 判斷網(wǎng)絡(luò)狀態(tài)的幾種方法

    1. 使用 Navigator onLine 屬性 Navigator onLine 屬性判斷瀏覽器是否在線,在線返回 true,離線返回 false; Navigator onLine 是只讀屬性,所有主流瀏覽器都支持 onLine 屬性; 2. 使用 ononline、onoffline 事件 這兩個方法屬于 “偵聽器”,在網(wǎng)絡(luò)連接 / 斷開的瞬間會觸發(fā)(當(dāng)網(wǎng)絡(luò)從離線變?yōu)樵?/p>

    2024年01月24日
    瀏覽(21)
  • 使用JavaScript關(guān)閉瀏覽器窗口的幾種方法

    在Web開發(fā)中,有時候我們需要通過JavaScript來控制用戶的瀏覽器行為,其中之一就是關(guān)閉瀏覽器窗口。本文將介紹幾種使用JavaScript關(guān)閉瀏覽器窗口的方法,并提供相應(yīng)的源代碼示例。 使用window.close方法關(guān)閉窗口 要關(guān)閉當(dāng)前窗口,可以使用window.close方法。這個方法會關(guān)閉當(dāng)前瀏

    2024年02月04日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包