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;
}
複製程式碼