js 型別檢測

無樣發表於2019-04-13

1. typeof

undefine、string、function、boolean、number 均能被檢測,其他一律返回 'object'

2. Object.prototype.constructor

  • 不能檢測基本型別(包含null),否則報錯
  • 用於檢測引用型別

3. instanceof

不太靠譜,驗證是 Array 還是 Object,還要多驗證一次

4. Object.prototype.toString.call(varible)

基本上能夠驗證所有型別

5. Array.isArray

只能驗證Array

應用——實現一個深拷貝

function deepCopy(obj){
    if(typeof obj === "object" && obj !== null){
        var result = obj.constructor == Array ? [] : {};
        for(let i in obj){
            result[i] = typeof obj[i] == "object" ? deepCopy(obj[i]) : obj[i];
        }
    } else {
        var result = obj;
    }
    return result;
}

複製程式碼

相關文章