今日公司项目开发的没那么近,得空拜读了阮一峰大神的JavaScript教程 ,当做巩固自己的基础知识做下笔记:判断某个数据的数据类型,通常是用typeof()去做,但这个对于数组Array和Object的判断都是[object]
,
这是不行的,那有没有方法结局这样的问题呢?答案是有的,先贴代码:
var type = function (obj){ var str = Object.prototype.toString.call(obj); return str.match(/\[object (.*?)\]/)[1].toLowerCase(); }在Google测试:
具体的测试还有正则 布尔类型 null unidentified 这里只列出几个常用项。阮一峰大佬列的挺全的,这里向大佬致敬。
这里试着简单说下原理,object本身是具有toString属性的,这个是在原型prototype上继承的。换句话说:toString是对象obj继承的属性,在通过call()方法,我们会得到一个[object *]的数据再通过正则匹配,由于本人对正则语法不是很了解(汗颜,下一步学习中),这里就借用阮大神的正则语句,得到一个返回值:
再取数组的第一个数,我们就会得到object(这里以object为例),再转小写,至此就完了
小结:可能对这个理解的不够深入,权当自己在学习路上的一种笔记,若日后忘了也能快速回忆起来,当然不止只有这一种方法,在后面看到了再补上,若是哪位大神指教指教,感激不尽。
各位大神姑且看看,不喜勿喷
在这里感谢阮一峰大神
转载于:https://www.cnblogs.com/lxmm/p/8630743.html