方法的返回值类型是object_JavaScript中如何判断类型

6980bb6ad72f10838b84ce1890fddfd8.png

1. typeof

  • typeof (整数/小数/自然对数Math.LN2/正无穷大数Infinity) ===> numbertypeof NaN ===> number
  • typeof (function(){}) ===> functiontypeof Math.sin ===> function
  • typeof undefined ===> undefined
  • typeof 'xxxx' ===> stringtypeof '' ===> string
  • typeof true/false ===> boolean
  • typeof Symbol() ===> symboltypeof Symbol.iterator ===> symbol
  • typeof {}/new Date()/[]/null/new RegExp() ===> object

typeof的方法当遇到对象时, 得到的结果都是object, 并不能准确的判断, 因此此法并不完美.

2. Object.prototype.toString

原理:Object原型上的toString()方法可以判断出类型, 格式一般为[object Function]/[object Number].... 这里需要借助call来改变this的指向. 例如:

var arr = [1, 2, 3] // 定义一个数组对象
console.log(Object.prototype.toString.call(arr)) // 改变arr的this指向, 调用Object原型链上的toString()方法, 输出[object Array]

那么, 为什么不可以直接使用Array/Function...内置的toString()方法来判断类型呢? 这是因为这些对象内置都有toString()方法, 只不过被重写了, 调用toString()方法输出的结果各不一样.

因此这种方式用来判断换类型比较完美, 且兼容性比较好.

3. $.type()

jQuery内置的方法, eg:

$.type(3) ===> number
$.type(function(){}) ===> function
$.type(null) ===> null
....

优点:

  • 简洁
  • 兼容性好
  • 能够准确判断类型

缺点:

  • 需要引入整个jQuery包, 增加了项目体积

4. instanceof

instanceof 用来比较一个对象是否为某一个构造函数的实例。注意,instanceof运算符只能用于对象,不适用原始类型的值。

格式为: 实例 instanceof 构造函数, 返回值为true/false

注意: 基本数据类型, 如string/null/undefined/boolean均会返回false, 但function可以用来判断, 如:

function(){} instanceof Object // true, function在js中也是一种对象
function(){} instanceof Function // true

用此法来判断对象比较实用, 但是遇到基本类型时显得有点鸡肋, 可视情况选择这种方法来判断了类型

5. constructor

constructor属性是对象才拥有的,它是从一个对象指向一个函数,含义就是指向该对象的构造函数,每个对象都有构造函数.

返回值为true/false, 例如:

new Number(3).constructor === Number  // true
new Function().constructor === Function  // true
''.constructor === String // true
new Boolean().constructor === Boolean // true
new Date().constructor === Date // true
...

有一点需要注意, 有时继承的时候constructor会被重写, 这里不做过多表述.

6. JS新语法判断类型

isArray() // 返回值会false/true

isNaN() // 判断是否为NaN

参考资料:

  1. js基础(一):判断类型
  2. 由Object.prototype.toString.call( )引发关于toString( )方法的思考
  3. 深入理解Object.prototype.toString.call()
  4. typeof和instanceof原理
  5. 帮你彻底搞懂JS中的prototype、proto与constructor(图解)

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

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

相关文章

c++代码整洁之道pdf_别再问如何用Python提取PDF内容了!

公众号后台回复“图书“,了解更多号主新书内容作者:陈熹来源:早起Python导读大家好,在之前的办公自动化系列文章中我们已经详细介绍了👉如何使用Python批量处理PDF文件,包括合并、拆分、水印、加密等操作。…

vim编辑模式_sublime vim模式和快捷键

vim的四种模式及模式切换vim一共有4个模式&#xff1a;正常模式 (Normal-mode) 插入模式 (Insert-mode)命令模式 (Command-mode)可视模式 (Visual-mode)正常模式启动vim后默认处于正常模式。不论位于什么模式&#xff0c;按下<Esc>键(有时需要按两下&#xff09;都会进入…

python读取txt文件_python实现读写txt文件的几种方法

一、读写模式&#xff1a;w&#xff1a;向文件中写入内容&#xff0c;w会清空原来文本内容a&#xff1a;向文件中追加内容r&#xff1a;从文件中读取内容wb&#xff1a;以二进制形式写入内容。rb&#xff1a;以二进制形式读文件内容ab&#xff1a;以二进制形式追加内容a、r、w&…

centos7升级openssh

注意&#xff1a; openssl版本(openssl版本要大于1.0.1&#xff0c;zlib版本要大于1.1.4) 一、安装依赖包 yum -y install gcc make perl # zlib zlib-devel yum install -y gcc openssl-devel pam-devel rpm-buildyum install telnet-ser…

java 复制对象_Java程序员必备:序列化全方位解析

前言 相信大家日常开发中&#xff0c;经常看到Java对象“implements Serializable”。那么&#xff0c;它到底有什么用呢&#xff1f;本文从以下几个角度来解析序列这一块知识点~什么是Java序列化&#xff1f;为什么需要序列化&#xff1f;序列化用途Java序列化常用API序列化的…

decimal类型对象里面定义什么类型_奥斯塔罗 单身开启桃花雷达 现阶段的我适合什么类型的对象?...

相信单身朋友总好奇下一位对象是否出现了&#xff1f;或是这么多人我该如何察觉下一位对象呢&#xff1f;如果单身的你正寻找对象中那就跟奥斯老师一起来看看下一位对象的个性与特征吧&#xff01;&#xff1c;&#xff1c;直觉选一张牌&#xff1e;>牌l选择到这组牌的朋友&…

win7系统怎么拷贝到u盘_Win7系统电脑无法识别U盘启动盘怎么办?

U盘想必大家不会陌生&#xff0c;通常会用来存储一些资料便于移动办公&#xff0c;有些小伙伴也会将其变更成U盘启动盘&#xff0c;帮助电脑重装系统。但是有用户反馈U盘插入电脑后无法识别启动&#xff0c;这要怎么办呢&#xff1f;其实很简单&#xff0c;下面小编就给大家带来…

数据库日志

很多时候需要追踪记录的变更情况&#xff0c;AX里有数据库日志来完成这件事情&#xff0c;操作路径为:系统管理->设置->数据库日志.如果按照向导添加后没看到相应的记录&#xff0c;可以尝试如下方法&#xff0c;选中生命科学电子签名。系统管理->设置->系统->配…

Nginx的应用之安装配置

一、Nginx简述 Nginx是一个开源且高性能、可靠的Http Web服务、代理服务。 开源: 直接获取源代码 高性能: 支持海量并发 可靠: 服务稳定 我们为什么选择 Nginx服务 Nginx非常轻量 功能模块少 (源代码仅保留http与核心模块代码,其余不够核心代码会作为插件来安装) 代码模块化 (易…

包含以下字段的 struct 怎么解决_S7-300/400进阶笔记4-2:STEP7的“结构”STRUCT数据类型的用法...

复杂数据类型是由基本数据类型通过一定的规则&#xff0c;有机结合在一起&#xff0c;形成的新的、复杂数据类型&#xff0c;STEP7中定义了以下几种复合数据类型&#xff1a;本文&#xff0c;我们介绍一下结构——STRUCT。STRUCT表示由一个不同数据类型的数据组合在一起&#x…

springboot a service调用b service_CaaS: 内容是新的基础设施 Content-as-a-Service

内容是每家企业的必争之地&#xff0c;根据 CMI 的数据报告&#xff0c;88% 的 B2B 企业每天至少产生一篇内容。内容正在成为新的基础设施&#xff0c;Content as a Service 可以被简单理解为一种 CMS&#xff08;Content Management Systen&#xff0c;内容管理系统&#xff0…

javascript网页特效_南通建网站哪些,网页设计维护

无锡邦程信息科技有限公司为您详细解读rKXvd南通建网站哪些的相关知识与详情&#xff0c;#末网页设想师根据差别站点的内容微风格&#xff0c;设想出完美的网页效果图。内容填充&#xff1a;不论是个人网站还是企业网站&#xff0c;都必需从内容那个动身点考虑&#xff0c;一个…

request用法_虚拟语气用法总结

虚拟语气主要指的的是带有非真实条件状语从句的复合句&#xff0c;表达的是说话人的遗憾后悔的语气&#xff0c;愿望以及建议&#xff0c;命令&#xff0c;要求等等的情感&#xff0c;往往说的是与事实相反或者没办法实现改变的东西。虚拟语气主要表现为在对过去现在或者将来的…

成为高效程序员的几大搜索技巧

对于缺乏编程知识的人来说&#xff0c;完全有可能编写一个网页或小程序。如果在用Google搜索相关示例时幸运的话&#xff0c;可以搜到现成的代码。即使是经验丰富的程序员&#xff0c;通常也会为了节省时间和精力而在网上搜索解决方案。 如果不借助搜索技术、网络及集体智慧&am…

flink运行原理_Flink运行架构剖析

本文主要介绍 Flink Runtime 的作业执行的核心机制。首先介绍 Flink Runtime 的整体架构以及 Job 的基本执行流程&#xff0c;然后介绍Flink 的Standalone运行架构&#xff0c;最后对Flink on YARN的两种模式进行了详细剖析。Flink Runtime作业执行流程分析整体架构图Flink Run…

vb 获取系统声音的电平_质量好的背景音乐系统套装效果图

笔者是主张低阶设计的&#xff0c;但不一定是越低阶越好&#xff0c;前面已经讲过是以分而治之的手段&#xff0c;达致阴阳融合之目的。分而治之就是把高低音单元的互相不协调的部分和缺点去掉&#xff0c;保留各自的优点&#xff0c;以达到互补融合之目的。有扩声系统中才存在…

vue初级尝试

为了跟上前端后台化的潮流&#xff0c;本少不得不开始关注vue&#xff0c;下列上机代码是针对App.vue进行的更改 数据渲染----一般键值对&#xff0c;数组&#xff0c;对象和对象数组<template><div id"app"><img><h1>{{msg}}</h1><…

钉钉产品介绍_钉钉正式推出智能OA:免费开放、一站解决“人财物事”管理难题...

9月2日消息&#xff0c;阿里钉钉今日正式上线智能OA产品“OA审批”&#xff0c;通过开放工作流、审批流引擎&#xff0c;向中小企业提供场景全面、定制简易、操作门槛低的OA协同服务&#xff0c;实现企业管理流程、业务流程的全链路数字化&#xff0c;一站解决人财物事管理难题…

同方知网软件_国产精品软件天若OCR:支持图像识别/自动翻译/公式识别等

日常生活中有时候我们会遇到某些文件以截图方式发送的 , 想要提取其中的文字内容进行整理就需要靠识别。毕竟如果内容较多的话靠手打可能是个费时费力的事情&#xff0c;OCR识别方面的软件很多但是多数软件都是收费的。在收费软件里自然也有价格便宜和价格比较高的&#xff0c;…

n维椭球体积公式_物质的量浓度公式如何应用

我们常用到的物理量一般有长度、时间、速度等等&#xff0c;物质的量也和这些概念一样&#xff0c;是一个物理量的整体名词&#xff0c;今天小编就为大家介绍一下什么是物质的量&#xff0c;物质的量的浓度公式是什么。1、国际单位制7个物理量长度(单位&#xff1a;m)、质量(单…