iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >JavaScript中检测数据类型的四种方法分别是什么
  • 689
分享到

JavaScript中检测数据类型的四种方法分别是什么

2023-06-26 04:06:30 689人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关javascript中检测数据类型的四种方法分别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:在介绍检测数据类型的方法之前,先说说JavaScript中数据类

这期内容当中小编将会给大家带来有关javascript中检测数据类型的四种方法分别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。


前言:
在介绍检测数据类型的方法之前,先说说JavaScript中数据类型有哪些吧~

JS数据类型主要分为两大类:基本数据类型和引用数据类型

基本数据类型:number、string、boolean、null、undefined、symbol(es6
引用数据类型:object(array、function、date...)

数据类型详细介绍请点击这里

检测数据类型四种方法:

  • typeof

  • instanceof

  • constructor

  • Object.prototype.toString.call()

1. typeof

语法:

typeof(变量)//ortypeof 变量

示例:

console.log(typeof "");            //strinGConsole.log(typeof 1);             //numberconsole.log(typeof true);          //booleanconsole.log(typeof null);          //object!!!console.log(typeof undefined);     //undefinedconsole.log(typeof []);            //objectconsole.log(typeof function(){});  //functionconsole.log(typeof console.log);   //functionconsole.log(typeof {});            //objectconsole.log(typeof Symbol());      //symbol(es6)console.log(typeof 23423n);        //bigint(谷歌67版本新提出)

总结:

  • typeof 的返回类型为字符串,值有:numberbooleanstringobjectfunctionundefinedsymbolbigint

  • typeof 一般用来判断基本数据类型,除了判断null会输出"object",其它都是正确的

  • typeof 判断引用数据类型时,除了判断函数会输出"function",其它都是输出"object"

注意:这里涉及两个经常考的面试题

  •  null 的数据类型是object (null是一个空的引用对象,是一个占位符)

  •  console.log 的数据类型是function 

  •  对于引用数据类型的判断,使用typeof并不准确,所以可以使用instanceof来判断引用数据类型

2. instanceof

instanceof 可以准确的判断引用数据类型,它的原理是检测构造函数的prototype属性是否在某个实例对象的原型链上

语法:

obj1 instanceof obj2 //obj1 是否是 obj2的实例

示例:

console.log(9 instanceof Number);                    // falseconsole.log(true instanceof Boolean);                // false console.log('libo' instanceof String);               // false  console.log([] instanceof Array);                    // trueconsole.log(function(){} instanceof Function);       // trueconsole.log({} instanceof Object);                   // true// 注意以下两组console.log(typeof null);                            //objectconsole.log(null instanceof Object);                 //false !!!console.log(typeof NaN);                             //numberconsole.log(NaN instanceof Number);                  //false !!!

总结:

  • instanceof 用来判断对象,代码形式为 【obj1 instanceof obj2】(obj2 必须为对象,否则会报错!)

  • instanceof 返回值为布尔值

注意:

instanceof只能用来判断两个对象是否属于实例关系, 而不能判断一个对象实例具体属于哪种类型

3. constructor(构造函数)

当一个函数 F被定义时,js引擎会为F添加 prototype 原型,然后再在 prototype上添加一个 constructor 属性,并让其指向 F 的引用。

如下所示:

JavaScript中检测数据类型的四种方法分别是什么

当执行 var f = new F() 时,F 被当成了构造函数,f 是F的实例对象,此时 F 原型上的 constructor 传递到了 f 上,因此f.constructor === F

JavaScript中检测数据类型的四种方法分别是什么

可以看出,F 利用原型对象上的 constructor 引用了自身,当 F 作为构造函数来创建对象时,原型上的 constructor 就被遗传到了新创建的对象上, 从原型链角度讲,构造函数 F 就是新对象的类型。这样做的意义是,让新对象在诞生以后,就具有可追溯的数据类型。

同样,JavaScript 中的内置对象在内部构建时也是这样做的:

JavaScript中检测数据类型的四种方法分别是什么

 ????注意:

  • null和undefined是无效的对象,所以他们不会有constructor属性!

  • 函数的constructor是不稳定的,主要是因为开发者可以重写prototype,原有的constructor引用会丢失,constructor会默认为Object

为什么变成了 Object?

因为 prototype 被重新赋值的是一个 { }{ } 是 new Object() 的字面量,因此 new Object() 会将 Object 原型上的 constructor 传递给 { },也就是 Object 本身。

因此,为了规范开发,在重写对象原型时一般都需要重新给 constructor 赋值,以保证对象实例的类型不被篡改。

4. Object.prototype.toString.call()

toString() 是 Object 的原型方法,调用该方法,默认返回当前对象的 [[Class]] 。这是一个内部属性,其格式为 [object Xxx] ,其中 Xxx 就是对象的类型。

对于 Object 对象,直接调用toString()  就能返回 [object Object] 。而对于其他对象,则需要通过 call / apply 来调用才能返回正确的类型信息。

Object.prototype.toString.call('') ;              // [object String]Object.prototype.toString.call(1) ;               // [object Number]Object.prototype.toString.call(true) ;            // [object Boolean]Object.prototype.toString.call(Symbol());         // [object Symbol]Object.prototype.toString.call(undefined) ;       // [object Undefined]Object.prototype.toString.call(null) ;            // [object Null]Object.prototype.toString.call(new Function()) ;  // [object Function]Object.prototype.toString.call(new Date()) ;      // [object Date]Object.prototype.toString.call([]) ;              // [object Array]Object.prototype.toString.call(new RegExp()) ;    // [object RegExp]Object.prototype.toString.call(new Error()) ;     // [object Error]Object.prototype.toString.call(document) ;        // [object htmlDocument]Object.prototype.toString.call(window) ;          // [object global] window 是全局对象 global 的引用

上述就是小编为大家分享的JavaScript中检测数据类型的四种方法分别是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: JavaScript中检测数据类型的四种方法分别是什么

本文链接: https://www.lsjlt.com/news/306701.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript中检测数据类型的四种方法分别是什么
    这期内容当中小编将会给大家带来有关JavaScript中检测数据类型的四种方法分别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:在介绍检测数据类型的方法之前,先说说JavaScript中数据类...
    99+
    2023-06-26
  • JavaScript中检测数据类型的四种方法
    目录1. typeof2. instanceof3. constructor(构造函数)4. Object.prototype.toString.call()前言:在介绍检测数据类型...
    99+
    2024-04-02
  • JavaScript中检测数据类型的四种方法总结
    目录检测数据类型1:typeof检测数据类型2:instanceof检测数据类型3:constructor检测数据类型4:Object.prototype.toString.call...
    99+
    2023-05-16
    JavaScript检测数据类型方法 JavaScript检测数据类型 JavaScript数据类型
  • JavaScript的八种数据类型分别是什么
    小编今天带大家了解JavaScript的八种数据类型分别是什么,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“JavaScript的八...
    99+
    2023-06-26
  • 四种C#参数类型分别是什么
    这篇文章将为大家详细讲解有关四种C#参数类型分别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C#参数类型有四种:值类型引用类型输出类型数组型参数C#参数类型(1):值参数所谓值参数,...
    99+
    2023-06-17
  • JavaScript中怎么检测数据类型
    本篇内容介绍了“JavaScript中怎么检测数据类型”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!检测数据类型1:typeof其返回结果都...
    99+
    2023-07-06
  • JavaScript数据类型检测实现方法详解
    目录一、typeof二、instanceof三、Object.prototype.toString.call()面试问题一、typeof 优点:能快速判断基本数据类型,除了 Null...
    99+
    2022-11-13
    JavaScript数据类型检测 JS数据类型检测
  • C++中四种类型转换的方法是什么
    这篇文章主要介绍了C++中四种类型转换的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++中四种类型转换的方法是什么文章都会有所收获,下面我们一起来看看吧。一、隐式类型转换和显示类型转换当等号两边的...
    99+
    2023-07-05
  • JS中的四种数据类型判断方法
    目录1、typeof2、instanceof3、constructor4、toString() 本文总结了四种判断方法: 1、typeof typeof是一个运算符,其有两种使用方式...
    99+
    2024-04-02
  • Web功能测试的四种类型是什么
    本文小编为大家详细介绍“Web功能测试的四种类型是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Web功能测试的四种类型是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Web功能测试的4种类型页面链接测...
    99+
    2023-06-04
  • Java中运用数组的四种排序方法分别是什么
    本篇文章给大家分享的是有关Java中运用数组的四种排序方法分别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法...
    99+
    2023-06-17
  • 关于JS数据类型检测的多种方式总结
    目录背景 判断数据类型的手段有哪些? 1. 用typeof判断基础数据类型: 2. 用instanceof判断对象数据类型3. 用contructor属性 4. toString方法...
    99+
    2024-04-02
  • 利用JS判断数据类型的四种方法
    目录前言1、typeof 2、instanceof 3、constructor 细节问题:4、toString 总结前言 Javascript 中的数据类型判断其实是一个JavaSc...
    99+
    2024-04-02
  • JVM的四种GC算法分别是什么
    本篇文章给大家分享的是有关JVM的四种GC算法分别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。程序在运行过程中,会产生大量的内存垃圾(一些没有引用指向的内存对象都属于内...
    99+
    2023-06-02
  • VB.NET Main过程中的四种声明方法分别是什么
    本篇文章为大家展示了VB.NET Main过程中的四种声明方法分别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。VB.NET编程语言的应用范围非常广泛,其编写方式的特殊性极大的吸引了编程人员的...
    99+
    2023-06-17
  • 数据库的三种模型分别是什么
    这篇文章主要介绍了数据库的三种模型分别是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言数据模型是数据库系统的核心,本文简要介绍三种主...
    99+
    2024-04-02
  • C++中的四种类型转换符是什么
    本篇内容介绍了“C++中的四种类型转换符是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一:背景在玩 C 的时候,经常会用 v...
    99+
    2023-07-02
  • Java XMLSocket实际使用的四种方法分别是什么
    Java XMLSocket实际使用的四种方法分别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。ActionScript 3.0提供了通过Java XMLSocket连接...
    99+
    2023-06-17
  • 数据库缓存最终一致性的四种方案分别是什么
    这篇文章将为大家详细讲解有关数据库缓存最终一致性的四种方案分别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。背景缓存是软件开发中一个非常有用的概念,数...
    99+
    2024-04-02
  • Python中引用传参的四种方式分别是什么
    这篇文章将为大家详细讲解有关Python中引用传参的四种方式分别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。引用传参一:>>> a = ...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作