1. 程式人生 > 其它 >javascript檢驗資料型別的方法

javascript檢驗資料型別的方法

typeof

typeof返回資料型別:number、string、boolean、symbel、undefined、function、object。引用資料中的陣列、日期、正則都會被返回object。並且對於簡單資料型別的null也會返回object。

const num = 10
const str = 'string'
const bol = true
const Undefined = undefined
const fn = () => { }
const obj = new Object()
const date = new Date()
const arr = []
const brr = /^[a-z]^/
const Null = null

console.log(typeof num);
console.log(typeof str);
console.log(typeof bol);
console.log(typeof Undefined);
console.log(typeof fn);
console.log(typeof obj);
console.log(typeof date);
console.log(typeof arr);
console.log(typeof brr);
console.log(typeof Null);

constructor

constructor是原型prototype中的一個屬性,當函式被定義時,js會為函式新增原型prototype,並且這個prototype中construor屬性指向函式引用。但是constructor無法識別null和undefined,如果呼叫的話會報錯。

console.log(num.constructor);
console.log(str.constructor);
console.log(bol.constructor);
console.log(fn.constructor);
console.log(obj.constructor);
console.log(date.constructor);
console.log(arr.constructor);
console.log(brr.constructor);
console.log(Null.constructor);
console.log(Undefined.constructor);



Object.prototype.toString.call()

可以返回所有的資料型別(博主暫時瞭解的),toString是Object的原型方法,其他型別作為Object的例項都重寫了toString方法,所以需要用call去呼叫Object上原型toString方法

console.log(Object.prototype.toString.call(num));
console.log(Object.prototype.toString.call(str));
console.log(Object.prototype.toString.call(bol));
console.log(Object.prototype.toString.call(fn));
console.log(Object.prototype.toString.call(obj));
console.log(Object.prototype.toString.call(date));
console.log(Object.prototype.toString.call(arr));
console.log(Object.prototype.toString.call(brr));
console.log(Object.prototype.toString.call(Null));
console.log(Object.prototype.toString.call(Undefined));

instanceof

instanceof檢測的是原型,A instanceof B檢測的是B.prototype是否出現在A的原型鏈上,所以instanceof只能判斷兩個物件是否屬於例項關係,而不能判斷一個物件例項具體屬於那種型別

let array = [1, 2, 34, 5];
let obj = {}
console.log(array instanceof Array); //true
console.log(Array instanceof Object); //true
console.log(array instanceof Object); //true
console.log(obj instanceof Array); //false