乐趣区

javascript 判断数据类型的几种方法

javascript 判断数据类型的几种方法一、typeof 直接返回数据类型字段,但是无法判断数组、null、对象
typeof 1
“number”

typeof NaN
“number”

typeof “1”
“string”

typeof true
“boolean”

typeof undefined
“undefined”

typeof null
“object”

typeof []
“object”

typeof {}
“object”
其中 null, [], {} 都返回 “object”
二、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
三、使用 Object.prototype.toString.call() 判断
call() 方法可以改变 this 的指向,那么把 Object.prototype.toString() 方法指向不同的数据类型上面,返回不同的结果
Object.prototype.toString.call(1)
“[object Number]”

Object.prototype.toString.call(NaN);
“[object Number]”

Object.prototype.toString.call(“1”);
“[object String]”

Object.prototype.toString.call(true)
“[object Boolean]”

Object.prototype.toString.call(null)
“[object Null]”

Object.prototype.toString.call(undefined)
“[object Undefined]”

Object.prototype.toString.call(function a() {});
“[object Function]”

Object.prototype.toString.call([]);
“[object Array]”

Object.prototype.toString.call({});
“[object Object]”
最后我们可以修改一下原型上的 typeof 方法或者在自己的对象上面重新定义一个方法 typeof()
function _typeof(obj){
var s = Object.prototype.toString.call(obj);
return s.match(/\[object (.*?)\]/)[1].toLowerCase();
};

退出移动版