判断数据类型
利用typeof判断数据类型的时候,无论是null,array还是object,返回的字符串都是‘object’,并不能很好区分
在Object的原型对象上有一个API可以直接判断数据的构造器,从而得出数据类型
// 判断数据的类型(构造器)
var str = 'abc';
var num = 123;
var boo = true;
var arr = [3,4,5];
var obj = {};
var fun = function (){}
var nul = null;
var und;
// 改变this指向借用object对象
// 对象的toString()固定输出[object,构造器]
console.log( Object.prototype.toString.call(str) );
console.log( Object.prototype.toString.call(num) );
console.log( Object.prototype.toString.call(boo) );
console.log( Object.prototype.toString.call(obj) );
console.log( Object.prototype.toString.call(arr) );
console.log( Object.prototype.toString.call(nul) );
console.log( Object.prototype.toString.call(und) );
console.log( Object.prototype.toString.call(fun) );
利用call()方法改变this的指向,借用Object.prototype上的方法toString,结果为
[object String]
[object Number]
[object Boolean]
[object Object]
[object Array]
[object Null]
[object Undefined]
[object Function]
数据类型一目了然
通过Object.prototype.toString.call()方法,可以准确地判断JavaScript中各种数据类型的构造器,包括String、Number、Boolean、Object、Array、Null、Undefined和Function,解决了typeof方法无法区分null、array和object的问题。

被折叠的 条评论
为什么被折叠?



