目錄
- 1. 相關(guān)文章
- 2. deepCopy()
- 3. createDeepCopy()
- 4. isDeepEqual()
- 5. DepthLoopPropertyCallback
- 6. DeepLoopOptions
- 7. DeepLoopOwnPropertyOptions
- 8. deepLoopOwnProperty()
- 9. deepLoopPropertyWithPrototype()
內(nèi)容
1. 相關(guān)文章
2. deepCopy()
詳情請(qǐng)參數(shù) 深拷貝文檔
3. createDeepCopy()
詳情請(qǐng)參數(shù) 深拷貝文檔
4. isDeepEqual()
function isDeepEqual(a: any, b: any, nullNotEqualUndefined?: boolean, strict?: boolean): boolean;
深度測(cè)試 a 和 b 是否完全相等;如果 a 和 b 是 對(duì)象,會(huì)進(jìn)行遞歸相等測(cè)試,只有所有的屬性 都相等時(shí),才會(huì)認(rèn)為是相等的;
- @param a : any
- @param b : any
- @param nullNotEqualUndefined ? : boolean 可選;默認(rèn)值:false; 是否把 null 和 undefined 作為不等的值來對(duì)待
- @param strict ? : boolean 可選;默認(rèn)值:false; 是否使用嚴(yán)格相等來對(duì) 基本類型的值 進(jìn)行比較
- @return boolean
注意:
- 對(duì)于 值為 undefined 的屬性 和 不存在的屬性 認(rèn)為是相等的屬性;
- 對(duì)于 對(duì)于 函數(shù) ,如果整個(gè)函數(shù)的代碼字符(fun.toString())串相等,則認(rèn)為函數(shù)是相等的;
- 目前只判斷了 基礎(chǔ)類型、Object、Array、function、Date、可迭代 類型;
- 對(duì)于可迭代類型,必須迭代 索引 和 索引對(duì)應(yīng)的值 都相等才認(rèn)為是相等的;
5. DepthLoopPropertyCallback
type DepthLoopPropertyCallback<ThisVal> = (this: ThisVal, key: string, value: any, obj: any, currDepth: number) => any;
循環(huán)遍歷的回調(diào)函數(shù),簡(jiǎn)化的類型描述為 (key,value,obj,currDepth))=> stopInfo : any
- @param key : string 當(dāng)前被遍歷的屬性名;
- @param value : any 當(dāng)前被遍歷的屬性值;
- @param obj : any 當(dāng)前被遍歷的屬性所屬的對(duì)象;
- @param currDepth : number 當(dāng)前遍歷的深度值,從 startDepth 所表示的值開始計(jì)數(shù);
- @returns stopInfo : any 表示是否中止循環(huán),并且該值會(huì)被 deepLoopOwnProperty 函數(shù)返回,如果返回的值是真值,則終止循環(huán);
6. DeepLoopOptions
interface DeepLoopOptions<ThisVal = any> {
maxDepth?: number | null | undefined;
thisValue?: ThisVal;
}
deepLoop的公共選項(xiàng)
- @property maxDepth?:number|null|undefined; // 可選;默認(rèn)值為:Infinity,即無限深度;要循環(huán)遍歷的最大深度;當(dāng)值為 undefined 或 null 時(shí),會(huì)使用默認(rèn)值,表示無限深度;被循環(huán)遍歷的值本身的深度為 0 ,被循環(huán)遍歷值的成員的深度為 1 ,依次類推;
- @property thisValue?: ThisVal; // 可選; callback 回調(diào)函數(shù)的this值 ;默認(rèn)值:當(dāng)前被遍歷的屬性所屬的對(duì)象;
7. DeepLoopOwnPropertyOptions
interface DeepLoopOwnPropertyOptions<ThisVal = any> extends DeepLoopOptions<ThisVal> {
allOwnProps?: OptionalBoolean;
}
deepLoopOwnPropertyOptions的選項(xiàng)
- @property allOwnProps?: OptionalBoolean; // 可選;默認(rèn)值:undefined; 是否要遍歷自身所有的屬性,包不可枚舉的,但不包括原型鏈上的屬性;true:遍歷對(duì)象自身(不包括原型上的)的所有屬性(包括不可枚舉的); false : 只遍歷對(duì)象自身中(不包括原型上的)可枚舉的屬性
8. deepLoopOwnProperty()
function deepLoopOwnProperty<Target extends object, ThisVal>(target: Target, callback: DepthLoopPropertyCallback<ThisVal extends undefined ? Target : ThisVal>, options?: DeepLoopOwnPropertyOptions<ThisVal> | null | undefined): any;
遞歸遍歷自身屬性鏈中的所有屬性(不包含原型上的屬性)
- @param target : object 必選; 被遍歷的目標(biāo)對(duì)象
- @param callback : (key,value,obj,currDepth))=> stopInfo : any 必選; 循環(huán)遍歷的回調(diào)函數(shù); key : 當(dāng)前被遍歷的屬性名;value : 當(dāng)前被遍歷的屬性值;obj : 當(dāng)前被遍歷的屬性所屬的對(duì)象;currDepth : 當(dāng)前遍歷的深度值,從 startDepth 所表示的值開始計(jì)數(shù);返回值 stopInfo : 表示是否中止循環(huán),并且該值會(huì)被 deepLoopOwnProperty 函數(shù)返回,如果返回的值是真值,則終止循環(huán);
- @param options ?:DeepLoopOwnPropertyOptions<ThisVal>|null|undefined 可選;選項(xiàng)對(duì)象;可配置的屬性如下:
- @property maxDepth?:number|null|undefined; // 可選;默認(rèn)值為:Infinity,即無限深度;要循環(huán)遍歷的最大深度;當(dāng)值為 undefined 或 null 時(shí),會(huì)使用默認(rèn)值,表示無限深度;被循環(huán)遍歷的值本身的深度為 0 ,被循環(huán)遍歷值的成員的深度為 1 ,依次類推;
- @property thisValue?: ThisVal; // 可選; callback 回調(diào)函數(shù)的this值 ;默認(rèn)值:當(dāng)前被遍歷的屬性所屬的對(duì)象;
- @property allOwnProps?: OptionalBoolean; // 可選;默認(rèn)值:undefined; 是否要遍歷自身所有的屬性,包不可枚舉的,但不包括原型鏈上的屬性;true:遍歷對(duì)象自身(不包括原型上的)的所有屬性(包括不可枚舉的); false : 只遍歷對(duì)象自身中(不包括原型上的)可枚舉的屬性
- @returns stopInfo : any 終止循環(huán)時(shí)返回的信息;
9. deepLoopPropertyWithPrototype()
function deepLoopPropertyWithPrototype<Target extends object, ThisVal>(target: Target, callback: DepthLoopPropertyCallback<ThisVal extends undefined ? Target : ThisVal>, options?: DeepLoopOptions<ThisVal> | null | undefined): any;
遞歸遍歷自身包括原型的屬性鏈中的所有可枚舉的屬性
- @param target : object 必選; 被遍歷的目標(biāo)對(duì)象
- @param callback : (key,value,obj,currDepth))=> stopInfo : any 必選; 循環(huán)遍歷的回調(diào)函數(shù); key : 當(dāng)前被遍歷的屬性名;value : 當(dāng)前被遍歷的屬性值;obj : 當(dāng)前被遍歷的屬性所屬的對(duì)象;currDepth : 當(dāng)前遍歷的深度值,從 startDepth 所表示的值開始計(jì)數(shù);返回值 stopInfo : 表示是否中止循環(huán),并且該值會(huì)被 deepLoopOwnProperty 函數(shù)返回,如果返回的值是真值,則終止循環(huán);
- @param options ?:DeepLoopOptions<ThisVal>|null|undefined 可選;選項(xiàng)對(duì)象;可配置的屬性如下:
- @property maxDepth?:number|null|undefined; // 可選;默認(rèn)值為:Infinity,即無限深度;要循環(huán)遍歷的最大深度;當(dāng)值為 undefined 或 null 時(shí),會(huì)使用默認(rèn)值,表示無限深度;被循環(huán)遍歷的值本身的深度為 0 ,被循環(huán)遍歷值的成員的深度為 1 ,依次類推;
- @property thisValue?: ThisVal; // 可選; callback 回調(diào)函數(shù)的this值 ;默認(rèn)值:當(dāng)前被遍歷的屬性所屬的對(duì)象;
- @returns stopInfo : any 終止循環(huán)時(shí)返回的信息;