let foo = }
let bar = {};
object.assign(bar, foo);
foo.a++;
foo.a === 2 //true
bar.a === 1 //true
乍一看,好像已經實現了深拷貝的效果,對foo.a進行的操作並沒有體現在bar.a中,但是再往後看
foo.c.d++;
foo.c.d === 2 //true
bar.c.d === 1 //false
bar.c.d === 2 //true
object.assign()的拷貝型別十分明顯了,這是一種可以對非巢狀物件進行深拷貝的方法,如果物件中出現巢狀情況,那麼其對被巢狀物件的行為就成了普通的淺拷貝.
如果真的想進行深拷貝,最簡單粗暴地方式就是json操作.
json物件中包含兩個方法, stringify()和parse(),前者可以將物件json化,而後者可以將json格式轉換為物件.這是一種可以實現深拷貝的方法.
但這種方法的缺陷是會破壞原型鏈,並且無法拷貝屬性值為function的屬性
所以如果只是想單純複製乙個巢狀物件,可以使用此方法
let foo = }
let bar = json.parse(json.stringify(foo));
深入學習之淺拷貝
let foo let bar object.assign bar,foo foo.a foo.a 2 true bar.a 1 true 乍一看,好像已經實現了深拷貝的效果,對foo.a進行的操作並沒有體現在bar.a中,但是再往後看 foo.c.d foo.c.d 2 true bar.c.d ...
深入學習之http
http協議是無狀態的,指的是協議對於事務處理沒有記憶能力,伺服器不知道客戶端是什麼狀態。也就是說,開啟乙個伺服器上的網頁和你之前開啟這個伺服器上的網頁之間沒有任何聯絡。http是乙個無狀態的面向連線的協議,無狀態不代表http不能保持tcp連線,更不能代表http使用的是udp協議 無連線 從 h...
深入學習之載入機制
onload事件是因為瀏覽器的非同步機制產生的 文件本身 html dom結構生成 載入js,css,window.nl ad function jquery.fn jquery.prototype window.jquery window.jquery 3 有些時候我們需要儲存乙個值,讓這個值不受...