js 类型判断

说到js的类型判断很容易想到的是 typeof、instanceof等。

typeof 有个缺点就是引用类型的结果值都是object 


所以就要说一下这些类型是怎么判断的。在说类型判断之前先介绍个东西 Object.prototype.toString 可以查看链接


翻译过来就是

当 toString 方法被调用的时候,下面的步骤会被执行:

  1. 如果 this 值是 undefined,就返回 [object Undefined]
  2. 如果 this 的值是 null,就返回 [object Null]
  3. 让 O 成为 ToObject(this) 的结果
  4. 让 class 成为 O 的内部属性 [[Class]] 的值
  5. 最后返回由 "[object " 和 class 和 "]" 三个部分组成的字符串
console.log(Object.prototype.toString.call(undefined)) // [object Undefined]
console.log(Object.prototype.toString.call(null)) // [object Null]var date = new Date();
console.log(Object.prototype.toString.call(date)) // [object Date]


所以就可以根据这个方法来判断具体是什么类型。
下面写一个jQuery源码里面使用的场景,下面是剪切了三个片段。


在jQuery里面的使用情况是下面这种情况。



所以根据jQuery源码,可以单独写一个判断类型的函数。

var class2type = {};"Boolean Number String Function Array Date RegExp Object Error".split(" ").map(function(item, index) {class2type["[object " + item + "]"] = item.toLowerCase();
})function type(obj) {if (obj == null) {return obj + "";}return typeof obj === "object" || typeof obj === "function" ?class2type[Object.prototype.toString.call(obj)] || "object" :typeof obj;
}




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/553608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win11文件夹怎么放到文件栏

Windows11系统桌面相对于win10系统来看,具有很大的变化,其中关于文件的设置具有很大的改变。其中关于文件的文件栏放置和删除是不少网友们关注的问题,下面一起来看看了解一下吧! win11文件夹怎么放到文件栏 win11文件夹需要权限删除怎么办 …

cordova报错“No installed build tools found. Install the Android build tools version - ”

在cordova 里面添加一个安卓平台后,用android studio打开安装gradle后,然后开始构建项目,这个时候在控制台上会报错 这个时候看到对应的文件下报错信息。 然后我们打开这个文件后, 发现这个 if else 判断走了 else 里面的代码&a…

Win7系统不能录音怎么办

目前Win7系统已经逐渐成为了最常使用的系统之一,但有一些小伙伴在使用Win7系统的过程中却发现录制音频功能无法录音,那么遇到这种问题应该怎么办呢?下面就和小编一起来看看Win7系统不能录音的解救方法吧。 Win7系统不能录音怎么办 1、既然是录音问题那…

Win7系统还原声音图标的方法

任务栏声音图标不见了?这是什么情况?任务栏声音图标不见了是我们经常遇到的问题,那么遇到这种情况我们该怎么办呢?下面小编给大家整理了Win7系统还原声音图标的方法,当你遇到win7任务栏声音图标消失不见时,可参照以下的操作方法进行解决。…

Vim 常用命令总结

vi 命令编辑器有三种模式:命令模式,编辑模式和末行模式。 命令模式:键盘的任意一个键都可以当成“编辑命令”。 编辑模式:键盘的任意一个键都当成“文本内容”。 末行模式:键盘的任意一个键都当成“文本管理命令”。…

Python数据结构与算法(一)--算法和时间复杂度

最近下班一直在学习和总结Python,最近在整理数据结构和算法这方面的知识,虽然大学的时候也学过数据结构(c语言版本),但是工作这几年一直在做前端所以,这方面的知识也忘了差不多,所以就想整理一下,方便以后自…

via浏览器如何拦截广告

1、用户们需要先在主页的右上角点击横杠选项,打开列表选择“设置”功能。 via浏览器如何拦截广告 Via浏览器屏蔽广告方法介绍 2、而当大家进入设置页面后,就可以从中选择“通用”功能,找到其中的广告拦截功能进行开启。 via浏览器如何拦截…

win7系统出现0x0000001a蓝屏代码的解决教程

当我们在使用win7的时候,遇到了开机时蓝屏卡死并且出现0x0000001a蓝屏代码的情况时,小编觉得这种问题不是驱动除就是系统服务出错,可以尝试在运行中输入Chkdsk /r代码进行修复。或者是通过我们电脑上安装的第三方杀毒软件进行处理。想要了解详…

Python数据结构与算法(二)--timeit模块

Python内置性能分析&#xff0c;timeit模块 timeit模块可以用来测试一小段Python代码的执行速度。 class timeit.Timer(stmtpass, setuppass, timer<timer function>) Timer是测量小段代码执行速度的类。 stmt参数是要测试的代码语句&#xff08;statment&#xff09…

QQ浏览器怎么关闭云加速 QQ浏览器云加速关闭方法

QQ浏览器里面有个功能叫做云加速&#xff0c;这个功能能够让QQ浏览器的性能大幅度提高&#xff0c;但是鱼与熊掌不能兼得&#xff0c;有些网页因为不兼容云加速从而导致页面显示不正常。今天&#xff0c;小编为大家带来了QQ浏览器云加速关闭方法。感兴趣的朋友快来了解一下吧。…

Python数据结构与算法(三)--数据结构的概念

上一章我们看Python内置的模块可以测试代码的时间&#xff0c;有的代码执行时间短有的执行时间长&#xff0c;就是说效率不一样。 如果上面不明显的话&#xff0c;大家看下面两个方法。append() 和 insert(0) import timeit def t6():li []for i in range(10000):li.append(…

Win11开始菜单恢复Win10样式的方法

许多用户夹紧器都已经抢先体验升级了Windows11系统&#xff0c;但是对于一些用户来说&#xff0c;Windows11开始菜单的界面不是非常好用&#xff0c;想要将开始菜单改成Win10的样子。那么我们要怎么调整呢?下面小编就为大家具体讲解一下吧! Win11开始菜单恢复Win10样式的方法…

Python数据结构与算法(四)--顺序表

顺序表 在程序中&#xff0c;经常需要将一组&#xff08;通常是同为某个类型的&#xff09;数据元素作为整体管理和使用&#xff0c;需要创建这种元素组&#xff0c;用变量记录它们&#xff0c;传进传出函数等。一组数据中包含的元素个数可能发生变化&#xff08;可以增加或删…

怎么修改腾讯视频的昵称

1、打开腾讯视频&#xff0c;点击打开个人中心。 如何在腾讯视频下载视频_怎么修改腾讯视频的昵称 2、然后此时选择箭头指向位置&#xff0c;打开头像。 如何在腾讯视频下载视频_怎么修改腾讯视频的昵称 3、此时点击上方的编辑个人资料&#xff0c;进入其中。 如何在腾讯视…

Python数据结构与算法(五)--链表

链表 链表的定义: 链表&#xff08;Linked list&#xff09;是一种常见的基础数据结构&#xff0c;是一种线性表&#xff0c;但是不像顺序表一样连续存储数据&#xff0c;而是在每一个节点&#xff08;数据存储单元&#xff09;里存放下一个节点的位置信息&#xff08;即地址…

via浏览器如何使用插件 Via浏览器添加使用插件教程

1、尽管Via浏览器的体积小巧&#xff0c;但其中提供的功能可谓是五脏俱全&#xff0c;而想要体验更多服务的话&#xff0c;就需要去安装插件了&#xff0c;这需要大家点击右上角的横杠选项&#xff0c;并且从列表里选择“设置”功能。 via浏览器如何使用插件 Via浏览器添加使用…

Python数据结构与算法(六)--栈和队列

栈和队列 栈&#xff08;stack&#xff09;&#xff0c;有些地方称为堆栈&#xff0c;是一种容器&#xff0c;可存入数据元素、访问元素、删除元素&#xff0c;它的特点在于只能允许在容器的一端&#xff08;称为栈顶端指标&#xff0c;英语&#xff1a;top&#xff09;进行加…

win7系统如何提高电脑运行速度

win7系统是一款被大多数用户们认可的好用系统&#xff0c;在不断的对win7系统的使用中很多用户们都在寻找win7提高电脑运行速度的方法?今天小编就为大家带来了win7老电脑提升速度的解决办法让我们一起来看一下win7系统提高电脑运行速度的解决方法吧。 win7系统如何提高电脑运…

Python排序算法(一)冒泡排序、选择排序、插入排序

今天总结一下Python中的排序算法。这篇文章有的排序算法是&#xff1a;冒泡排序、选择排序、插入排序。 冒泡排序 先看一下代码。 冒泡排序 def bubble_sort(aList):n len(aList)for i in range(0, n - 1):for j in range(0, n - i - 1):if aList[j] > aList[j 1]:aList…

Win7系统虚拟键盘打开的方法

有时候自己的键盘使用久了以后经常会突然坏掉&#xff0c;这个时候我们可以开启电脑自带虚拟键盘来解燃眉之急。那么Win7的虚拟键盘该怎么打开?今天就和小编一起来看看Win7系统虚拟键盘打开的方法吧。 Win7系统虚拟键盘打开的方法 1、打开电脑左下角的“开始”&#xff0c;然…