摘要:淺克隆一使用時(shí),它會(huì)將指針復(fù)制到它占用的內(nèi)存空間。三使用是一個(gè)修改并返回目標(biāo)對(duì)象的函數(shù)將里面的東西重新賦值給一個(gè)空對(duì)象深克隆僅對(duì)數(shù)字字符串和不含函數(shù)和屬性的對(duì)象有效對(duì)所有類型有效,函數(shù)和會(huì)通過(guò)引用復(fù)制輸出參考
淺克隆
一. =
const obj = {s: 1, t: 2} const obj2 = obj console.log(obj, obj2)//{s: 1, t: 2} {s: 1, t: 2} 使用 = 時(shí),它會(huì)將指針復(fù)制到它占用的內(nèi)存空間。引用類型不包含值, 它們是指向內(nèi)存中值的指針。
二.擴(kuò)展運(yùn)算符
const phone = {apple: "good", huwei: "verygood"} const clonePone = {...phone} console.log(clonePone)//{apple: "good", huwei: "verygood"} 使用它,則需要使用Babel(或類似的東西)進(jìn)行編譯。
三.使用 Object.assign
<是一個(gè)修改并返回目標(biāo)對(duì)象的函數(shù)>
const eat = {apple: "green", orange: "yellow"} const cloneEat = Object.assign({}, eat) // 將eat里面的東西 重新賦值給一個(gè)空對(duì)象 console.log(cloneEat)//{apple: "green", orange: "yellow"}深克隆
1 JSON.stringify/parse: 僅對(duì)數(shù)字、字符串和不含函數(shù)和 Symble 屬性的對(duì)象有效
const city = { shanghai: "sh", where: { shenzhen: "sz" } } const deepClone = JSON.parse(JSON.stringify(city)) console.log(deepClone)
2 deepClone: 對(duì)所有類型有效,函數(shù)和 Symble 會(huì)通過(guò)引用復(fù)制
var Point = function (x) { this.x = x } Point.prototype.y = 2 var obj = new Point(1) var copy = Object.assign({ __proto__: obj.__proto__ }, obj) // 輸出{x:1,y:2} copy.x=5 console.log(copy) console.log(Point)
參考:https://segmentfault.com/a/11...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/106370.html
摘要:在聊以下簡(jiǎn)稱深度克隆之前,我們先來(lái)了解一下中對(duì)象的組成??寺』蛘呖截惙譃榉N淺度克隆深度克隆。淺度克隆基本類型為值傳遞,對(duì)象仍為引用傳遞。 該文轉(zhuǎn)載自http://www.cnblogs.com/zichi/p/4568150.html,有部分修改。 在聊JavaScript(以下簡(jiǎn)稱js)深度克隆之前,我們先來(lái)了解一下js中對(duì)象的組成。在 js 中一切實(shí)例皆是對(duì)象,具體分為 原始類型 ...
摘要:原始類型對(duì)象指的是字符串?dāng)?shù)值布爾值,引用類型對(duì)象指的是數(shù)組對(duì)象函數(shù)。既然對(duì)象分為這兩類,他們的復(fù)制克隆也是有差別的??偨Y(jié)根據(jù)上面的情況,另外,克隆引用對(duì)象必須采用完整克隆深度克隆,包括對(duì)象的值也是一個(gè)對(duì)象也要進(jìn)行完整克隆深度克隆。 前言 之前有人問(wèn)我如何克隆一個(gè)JS對(duì)象,我當(dāng)時(shí)沒(méi)答上來(lái);過(guò)后我查資料弄懂了這個(gè)問(wèn)題,現(xiàn)在整理成文。 正文 JavaScript的一切實(shí)例都是對(duì)象,但他們也分...
摘要:它將返回目標(biāo)對(duì)象。封閉對(duì)象方法判斷一個(gè)對(duì)象是否被密封。為源對(duì)象為修改的屬性名或設(shè)置,同上方法返回一個(gè)給定對(duì)象自身可枚舉屬性的鍵值對(duì)數(shù)組方法返回指定對(duì)象上一個(gè)自有屬性對(duì)應(yīng)的屬性描述符方法判斷兩個(gè)值是否是相同的值。 對(duì)象作為引用類型,工作中免不了復(fù)制對(duì)象,下面來(lái)看看克隆的方法 Object.assign() 方法用于將所有可枚舉屬性的值從一個(gè)或多個(gè)源對(duì)象復(fù)制到目標(biāo)對(duì)象。它將返回目標(biāo)對(duì)象。淺...
摘要:結(jié)構(gòu)化算法優(yōu)于的地方優(yōu)于的地方結(jié)構(gòu)化克隆可以復(fù)制對(duì)象。的克隆粒度將會(huì)跟原始對(duì)象相同,并且復(fù)制出來(lái)相同的像素?cái)?shù)據(jù)。企圖去克隆節(jié)點(diǎn)同樣會(huì)拋出異常。消息通道的傳遞是異步的,使用結(jié)構(gòu)化克隆算法。 JavaScript 深拷貝性能分析(漢化版) JavaScript 深拷貝性能分析 Object.assign() Object.assign 方法只會(huì)拷貝源對(duì)象自身的并且可枚舉的屬性到目標(biāo)對(duì)象。...
摘要:對(duì)象會(huì)記住它的原型給對(duì)象提供了一個(gè)名為的隱藏屬性,某個(gè)對(duì)象的屬性默認(rèn)會(huì)指向它的構(gòu)造器的原型對(duì)象,即。我們通過(guò)代碼來(lái)驗(yàn)證再來(lái)實(shí)際上,就是對(duì)象跟對(duì)象構(gòu)造器的原型聯(lián)系起來(lái)的紐帶切記這句話,對(duì)未來(lái)理解原型鏈很有幫助。 封裝 封裝數(shù)據(jù) 在許多語(yǔ)言的對(duì)象系統(tǒng)中,封裝數(shù)據(jù)是由語(yǔ)法解析來(lái)實(shí)現(xiàn)的,這些語(yǔ)言也許提供了 private、public、protected 等關(guān)鍵字來(lái)提供不同的訪問(wèn)權(quán)限。例如:j...
摘要:它接受任意數(shù)量的源對(duì)象,枚舉它們的所有屬性并分配給。所以現(xiàn)在怎么辦有幾種方法可以創(chuàng)建一個(gè)對(duì)象的深拷貝。為了防止發(fā)生任何意外,請(qǐng)使用而不是。我想測(cè)量哪種方法是最高性能的。圖表以下是,和中不同技術(shù)的性能。 原文:Deep-copying in JavaScript - DasSur.ma 如何在 JavaScript 中拷貝一個(gè)對(duì)象?對(duì)于這個(gè)很簡(jiǎn)單的問(wèn)題,但是答案卻不簡(jiǎn)單。 引用傳值 在...
閱讀 3326·2021-11-23 09:51
閱讀 2454·2021-11-09 09:46
閱讀 1487·2019-08-30 15:54
閱讀 3135·2019-08-30 14:22
閱讀 2917·2019-08-29 12:40
閱讀 1640·2019-08-26 10:33
閱讀 1786·2019-08-23 17:09
閱讀 1563·2019-08-23 16:11