js判斷數據類型

1、typeof 直接返回數據類型字段,可是沒法判斷數組、null、對象數組

typeof 1
"number"app

typeof NaN
"number"ide

typeof "1"
"string"函數

typeof true
"boolean"ui

typeof undefined
"undefined"this

typeof null
"object"prototype

typeof []
"object"regexp

typeof {}
"object"
其中 null, [], {}都返回 "object"對象

2、instanceof 判斷某個實例是否是屬於原型原型

// 構造函數
function Fruit(name, color) {
this.name = name;
this.color = color;
}
var apple = new Fruit("apple", "red");

// (apple != null)
apple instanceof Object // true
apple instanceof Array // false

3、使用 Object.prototype.toString.call()判斷

call()方法能夠改變this的指向,那麼把Object.prototype.toString()方法指向不一樣的數據類型上面,返回不一樣的結果

function _typeof(obj){
var s = Object.prototype.toString.call(obj);
return s.match(/[object (.*?)]/)[1].toLowerCase();
};

_typeof([12,3,343]);
"array"

_typeof({name: 'zxc', age: 18});
"object"

_typeof(1);
"number"

_typeof("1");
"string"

_typeof(null);
"null"

_typeof(undefined);
"undefined"

_typeof(NaN);
"number"

_typeof(Date);
"function"

_typeof(new Date());
"date"

_typeof(new RegExp());"regexp"

相關文章
相關標籤/搜索