toString.call()通用的判断数据类型方法示例


Posted in Javascript onAugust 28, 2020

大家都知道判断数据类型的方法有很多。我们常用的有typeof但是,这个方法有一定的局限性。

typeof null
// "object"
 
typeof [8]
// "object"
 
typeof {}
// "object"
 
typeof function(){}
// "function"
typeof 2
//"number"
 
typeof ""
//"string"
 
typeof true
//"boolean"
 
typeof undefined
//"undefined"
 
typeof Symbol(2)
// "symbol"

typeof 无法区分null 数组和对象,通常我们会区分判断Array和Object

有时会用instanceof 来判断是不是一个对象的实例子

[] instanceof Array
 // true 这种方法可以判断数组,不能区分对象
[] instanceof Object
// true
 
null instanceof Object
// false 也不能区分null

下面介绍一种方法,对每一种数据类型都实用。

toString.call(function(){})
// "[object Function]"
 
toString.call(null)
//"[object Null]"
 
toString.call([2])
"[object Array]"
 
toString.call(undefined)
//"[object Undefined]"
 
toString.call('stjd')
//"[object String]"
 
toString.call(1)
//"[object Number]"
 
toString.call(true)
//"[object Boolean]"
 
toString.call(Symbol(3))
// "[object Symbol]"
 
toString.call({q:8})
//"[object Object]"

再来思考, toString.call([2]) 意思就是改变方法中的this指向,指向传递进去的参数,也就是[2]。那我这样写不是更直观吗?[2].toString()。结果

[2].toString()
//"2"
var obj = {a: 67}
  console.log(obj.toString())
  // [object Array]

对比上面两个返回的值是不一样的。这是因为[2].toString()调用的是数组的toSting()方法,而不是对象的toSting()方法。Array改写了Object的toString方法。

toSting.call()实际上就是 Object.prototype.toSting.call()

console.log(Object.prototype.toString.call([33])) // [object Array]

而[2].toSting()实际上是

console.log(Array.prototype.toString.call([2])) //2

使用的过程中,可以这样封装函数

function isType(type) {
   return function(obj) {
    return {}.toString.call(obj) == "[object " + type + "]"
   }
  }
  
  var isObject = isType("Object")
  var isString = isType("String")
  var isArray = Array.isArray || isType("Array")
  var isFunction = isType("Function")
  var isUndefined = isType("Undefined")

总结

到此这篇关于toString.call()通用的判断数据类型方法的文章就介绍到这了,更多相关toString.call()判断数据类型内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
一个简单的jQuery插件制作 学习过程及实例
Apr 25 Javascript
基于JQuery的一个简单的鼠标跟随提示效果
Sep 23 Javascript
jQuery 源码分析笔记(4) Ready函数
Jun 02 Javascript
js根据给定的日期计算当月有多少天实现思路及代码
Feb 25 Javascript
js中通过split函数分割字符串成数组小例子
Sep 21 Javascript
js左右弹性滚动对联广告代码分享
Feb 19 Javascript
JS制作简单的三级联动
Mar 18 Javascript
JS实现的文字与图片定时切换效果代码
Oct 06 Javascript
分享javascript、jquery实用代码段
Oct 20 Javascript
AngularJS开发教程之控制器之间的通信方法分析
Dec 25 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
Sep 02 Javascript
深入浅析Vue全局组件与局部组件的区别
Jun 15 Javascript
你不知道的 TypeScript 高级类型(小结)
Aug 28 #Javascript
js和jquery判断数据类型的4种方法总结
Aug 28 #jQuery
Node在Controller层进行数据校验的过程详解
Aug 28 #Javascript
Postman无法正常返回结果问题解决
Aug 28 #Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
Aug 28 #Javascript
vue自定义指令和动态路由实现权限控制
Aug 28 #Javascript
vue 动态给每个页面添加title、关键词和描述的方法
Aug 28 #Javascript
You might like
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
php目录管理函数小结
2008/09/10 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
2017/03/13 PHP
js中有关IE版本检测
2012/01/04 Javascript
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
JS选项卡动态替换banner图片路径的方法
2015/05/11 Javascript
纯javascript代码实现计算器功能(三种方法)
2015/09/07 Javascript
JavaScript实现点击按钮切换网页背景色的方法
2015/10/17 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
js实现rem自动匹配计算font-size的示例
2017/11/18 Javascript
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
基于Express框架使用POST传递Form数据
2019/08/10 Javascript
Python处理字符串之isspace()方法的使用
2015/05/19 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
2016/11/19 Python
python如何实现内容写在图片上
2018/03/23 Python
Django添加feeds功能的示例
2018/08/07 Python
快速解决jupyter notebook启动需要密码的问题
2020/04/21 Python
如何使用python切换hosts文件
2020/04/29 Python
keras 多gpu并行运行案例
2020/06/10 Python
Python获取浏览器窗口句柄过程解析
2020/07/25 Python
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
HTML5 播放 RTSP 视频的实例代码
2019/07/29 HTML / CSS
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
瑞典廉价机票预订网站:Seat24
2018/06/19 全球购物
优秀的2014年两会精神解读
2014/03/17 职场文书
主题班会演讲稿
2014/05/22 职场文书