JS中精确判断对象的类型

var a = [1,2,3,4,5];
var b = function(){}
var c = {'age':18,'sex':'男'}
console.log(typeof a,typeof b, typeof c)
console.log(Object.prototype.toString.apply(a),Object.prototype.toString.call(b),Object.prototype.toString.apply(c))

在toString方法被调用时,会执行下面的操作步骤:
 
1. 获取this对象的[[Class]]属性的值。
 
2. 计算出三个字符串"[object ", 第一步的操作结果Result(1), 以及 "]"连接后的新字符串。
 
3. 返回第二步的操作结果Result(2)。

[[Class]]是一个内部属性,所有的对象(原生对象和宿主对象)都拥有该属性.在规范中,[[Class]]是这么定义的:
内部属性 描述
[[Class]] 一个字符串值,表明了该对象的类型。

其过程简单说来就是:1、获取对象的类名(对象类型)。2、然后将[object、获取的类名、]组合并返回。


因此在JS中准确判断数据类型用:Object.prototype.toString.call(obj) 即可


猜你喜欢

转载自blog.csdn.net/h13783313210/article/details/79834397