JS判斷資料型別的4種方法
阿新 • • 發佈:2018-12-04
4種判斷方法分別是:
- typeof
- instanceof
- prototype屬性
- constructor屬性
可判斷的型別對比如下圖:
// 建構函式名方法
function getConstructorName(data) {
return (data === undefined || data === null) ? data : (data.constructor && data.constructor.toString().match(/function\s*([^(]*)/)[1]);
}
// 物件原型方法
// 不能判斷自定義函式物件型別
function getPrototypeName(data) {
return Object.prototype.toString.call(data).slice(8, -1);
}
// 自定義的建構函式
function Func() {
this.attr = 33;
}
var newObj = new Func(),
num = 123,
arr = [];
console.group("檢測自定義建構函式例項" );
console.log(getConstructorName(newObj)); // Func
console.log(getPrototypeName(newObj)); // Object ;僅能識別為物件
console.log(newObj instanceof Func); // true
console.log(typeof newObj); // object ;僅能識別為物件
console.groupEnd();
console.group("檢測數值類");
console.log(getConstructorName (num)); // Number
console.log(getPrototypeName(num)); // Number
// console.log(num instanceof Number); // 數值類不是物件不能使用該方法
console.log(typeof num); // number
console.groupEnd();
console.group("檢測陣列類");
console.log(getConstructorName(arr)); // Array
console.log(getPrototypeName(arr)); // Array
console.log(arr instanceof Array); // true
console.log(typeof arr); // object ;僅能識別為物件
console.groupEnd();
End.