主要考察目標:
資料型別校驗
迴圈引用
function deepclone(data, hash = new weakmap)
}return instance
}var a =
}var b = deepclone(a)
b.desc.age = 100
console.log(b)
console.log(a)
// js迴圈引用
var t = {}
t.t = t
console.log(deepclone(t))
今日檢視vuex原始碼,工具函式中定義了乙個deepcopy函式,也可以達到深轉殖效果,只考慮了對陣列和物件型別進行深拷貝,不過用於日常的業務功能開發,肯定足夠了。
function find(list, fn)
function deepcopy(obj, cache = )
const hit = find(cache, v => v.original === obj)
if(hit)
const copy = array.isarray(obj) ? : {}
cache.push()
object.keys(obj).foreach(key => )
return copy
}
js高階高階 手動實現call 函式
首先看下原生的js的call var obj var obj2 console.log obj.getname.call obj2,hello,everyone,i am hello,everyone,i am evan you call 做了什麼?1 將呼叫call的函式的this指向call函式...
python高階 深拷貝 淺拷貝
複製需要區分,複製的是原始檔的資料,還是指向原始檔資料的位址 1.引用 b a時,理解為b指向了a指向的資料,相當於引用複製 a 1,2 b a 驗證複製的是資料還是位址 1.檢視ab的位址 id a 2677646858824 2.淺拷貝 copy.copy import copy a 1,2 b...
js實現深拷貝
深拷貝 深拷貝本身只針對較為複雜的object型別資料,但是含義的話比如基本資料型別a和b的賦值操作,賦值之後b有自己的記憶體空間,a,b之間互不影響 淺拷貝 引用資料型別 名存在棧記憶體中,值存在於堆記憶體中,但是棧記憶體會提供乙個引用的位址指向堆記憶體中的值。當b a進行拷貝時,其實複製的是a的...