vue對(duì)象的深度克隆方式
vue對(duì)象的深度克隆
方法1
通過(guò)js序列化,將js轉(zhuǎn)換成字符串,然后再將字符串轉(zhuǎn)換成js對(duì)象
var olbObj = {a:1}; var str = JSON.stringify(obj); //序列化對(duì)象 var newobj = JSON.parse(str); //還原 //相當(dāng)于 var newObj = JSON.parse(JSON.stringify(olbObj ))
方法2
ES6語(yǔ)法對(duì)象展開(kāi)運(yùn)算符進(jìn)行對(duì)象的展開(kāi)賦值
var a = {a:0} var b = {...a}
方法3
進(jìn)行對(duì)象的遍歷復(fù)制,對(duì) 對(duì)象的每一條屬性進(jìn)行復(fù)制,這樣就能進(jìn)行對(duì)象的深度克隆
function newobj(obj) { ? var str, newobj = obj.constructor === Array ? [] : {}; ? //constructor 屬性返回對(duì)創(chuàng)建此對(duì)象的數(shù)組函數(shù)的引用。創(chuàng)建相同類(lèi)型的空數(shù)據(jù) ? if (typeof obj !== 'object') { ? ? return; ? } else { ? ? for (var i in obj) { ? ? ? if (typeof obj[i] === 'object'){//判斷對(duì)象的這條屬性是否為對(duì)象 ? ? ? ? newobj[i] = newObj(obj[i]);//若是對(duì)象進(jìn)行嵌套調(diào)用 ? ? ? }else{ ? ? ? ? newobj[i] = obj[i]; ? ? ? } ? ? } ? } ? return newobj;//返回深度克隆后的對(duì)象 }
vue克隆對(duì)象時(shí)遇到的問(wèn)題
我們知道 當(dāng)我們需要深克隆一個(gè)對(duì)象 或者數(shù)組時(shí) 改變這個(gè)得到的數(shù)據(jù),原數(shù)據(jù)保持不變 比較簡(jiǎn)單的用到的函數(shù)基本都是
let b = JSON.parse(JSON.stringify(a))
但是假如我們克隆一個(gè)vue響應(yīng)式對(duì)象時(shí) 發(fā)現(xiàn)用這個(gè)方法沒(méi)啥用
所以需要一個(gè)工具函數(shù)老深克隆
//深克隆? export const deepClone = (source) => { ? var sourceCopy = source instanceof Array ? [] : {} ? for (var item in source) { ? ? sourceCopy[item] = typeof source[item] === 'object' ? deepClone(source[item]) : source[item] ? } ? return sourceCopy } let b = deepClone (a)
這樣就得到響應(yīng)式的啦
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue限制輸入數(shù)字或者保留兩位小數(shù)實(shí)現(xiàn)
這篇文章主要為大家介紹了vue限制輸入數(shù)字或者保留兩位小數(shù)實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07vue防止花括號(hào){{}}閃爍v-text和v-html、v-cloak用法示例
這篇文章主要介紹了vue防止花括號(hào){{}}閃爍v-text和v-html、v-cloak用法,結(jié)合實(shí)例形式分析了vue.js使用v-text和v-html、v-cloak防止花括號(hào){{}}閃爍的解決方法,需要的朋友可以參考下2019-03-03vue-cli3項(xiàng)目升級(jí)到vue-cli4 的方法總結(jié)
這篇文章主要介紹了vue-cli3項(xiàng)目升級(jí)到vue-cli4 的方法總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03為Vue3?組件標(biāo)注?TS?類(lèi)型實(shí)例詳解
這篇文章主要為大家介紹了為Vue3?組件標(biāo)注?TS?類(lèi)型實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08使用開(kāi)源Cesium+Vue實(shí)現(xiàn)傾斜攝影三維展示功能
這篇文章主要介紹了使用開(kāi)源Cesium+Vue實(shí)現(xiàn)傾斜攝影三維展示,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07vue作用域插槽詳解、slot、v-slot、slot-scope
這篇文章主要介紹了vue作用域插槽詳解、slot、v-slot、slot-scope,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03簡(jiǎn)述vue路由打開(kāi)一個(gè)新的窗口的方法
這篇文章主要介紹了vue路由打開(kāi)一個(gè)新的窗口的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11