javascript 基本方法擴充套件

2021-08-21 13:27:08 字數 2311 閱讀 8059

js 中簡單型別的比較是對具體值的比較;

而對於引用型別的比較,其比較的是引用值是否相等。

這裡提供一種擴充套件方法,使得:

equal(1,1); equal(『a』,』a』); 自然都返回為 true

equal(,) ; 也能返回為 true ; equal(,) 返回 false

// 獲取複雜物件的型別

function

getobjtype

(obj)

// 物件是否為某乙個型別

function

istype

(obj, type)

/** * 僅比較值是否相等,不計較其記憶體位址是否同乙個

* equal(,) 返回 true

* 這裡不考慮函式的比較,直接執行預設的比較

*/function

isequal

(a, b)

if (typeofa !== 'object')

if (typeofa === 'object')

// 如果是陣列型別

if (objtypea === 'array')

else

}return

true;}}

// 如果是object型別

else

if (objtypea === 'object')

if (!isequal(a[attr], b[attr])) }}

// 如果是正則型別

else

if (objtypea === 'regexp')

// 如果是日期型別

else

if (objtypea === 'date')

} return

true;

}// 測試使用

console.log(isequal( }, })) // true

console.log(isequal([1, 2, 3], [1, 2, 3])) // true

console.log(isequal('1', 1)) // false

console.log(isequal(/a/, /a/)) // true

console.log(isequal(new

date(), new

date())) // true

var fn = function

()

console.log(isequal(fn, fn)) // true

var origindata = [,,

,,,,

,,,,

,];

預設用children連線子級,可通過傳遞第三個引數linkkey的值改變

function

totree

(arr, pid,linkkey='children')

treearr.push(tree);

})return treearr;

}// 使用

var formattree = totree(origindata, '0');

console.log(formattree)

注意,此處的引數treedata為引用關係,在展平的過程中,用到了delete,所以會影響到原資料,如果不想影響到原資料,需先拷貝要展平的資料,然後傳入拷貝的資料。

function

flattentree

(treedata, linkkey)

delete thrunk[linkkey]

result = result.concat(thrunk);

})return result;

} // 使用,先使用轉變為樹,又展平回去。

flattentree(totree(origindata, '0'),'children');

var arr = [1,[2,[3,[4,[5]]]]];

function

flatten

(arr, result = )

else

} return result;

}console.log(flatten(arr)); // [1,2,3,4,5]

todo

JavaScript之Date日期物件擴充套件

各種時間加減 收藏起來以備後用 名稱 日期加法函式 引數 part year month day hour minute second millisecond 返回 date物件 date.prototype.add function part,value return this date.prot...

javascript基本學習

ecma 幾乎沒有相容性問題 dom 有一些操作不相容 bom 沒有相容問題 完全不相容 變數的型別 1 型別檢驗 typeof運算子 數字變數 number string boolean undefined object function 乙個變數應該只存放一種型別的資料 變數型別 2 資料型別轉...

JavaScript基本語法

一 資料型別 6類 數值型 int 整型 float 浮點型 字串型別 string 布林型boolean 物件型別object 空型別null 未定義型別undefined 變數被建立但未被賦值 二 變數 var 變數名 用var宣告變數 三 運算子 6類 1 賦值運算子 等 2 算數運算子 等 ...