判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解

yizhihongxing

接下来我将详细讲解“判断js中各种数据的类型方法之typeof与Object.prototype.toString讲解”。

typeof与Object.prototype.toString的差别

在 Javascript 中,判断一个值的类型通常使用 typeof 操作符和 Object.prototype.toString 方法,二者在实际开发中常常被用来配合使用,但是它们又有一些显著的差别,接下来我们将分别介绍。

1. typeof

typeof 是一种操作符,可返回一个值的数据类型,返回值为以下七种字符串:

  • "undefined":未定义的变量或未给函数提供返回值的函数表达式。
  • "boolean":布尔值。
  • "string":字符串。
  • "number":数字。
  • "object":对象,注意其中包括 null
  • "function":函数。

示例:

typeof 1; // "number"
typeof true; // "boolean"
typeof 'hello'; // "string"
typeof undefined; // "undefined"
typeof null; // "object"
typeof {};// "object"
typeof function() {};// "function"

需要注意的是,typeof null 返回的是 "object",而不是 "null",这是一个我们需要注意的坑点。

2. Object.prototype.toString

Object.prototype.toString 方法返回一个值的“[[Class]]”属性,即一个字符串,格式为“[object Xxx]”, Xxx 为该对象的类型。

示例:

Object.prototype.toString.call(1); // "[object Number]"
Object.prototype.toString.call(true); // "[object Boolean]"
Object.prototype.toString.call('hello'); // "[object String]"
Object.prototype.toString.call(undefined); // "[object Undefined]"
Object.prototype.toString.call(null); // "[object Null]"
Object.prototype.toString.call({}); // "[object Object]"
Object.prototype.toString.call(function() {}); // "[object Function]"

需要注意的是,Object.prototype.toString 只适用于内置的数据类型,对于自定义的类型,需要自己构建 toString 方法。

如何选择使用

通过上述的介绍,我们可以发现 typeof 的使用非常简便,同时它也是介绍数据类型知识的最好入口,但是它的类型检测并不完整,比如无法区分 nullobject

在实际工作中,我们可以选择两种检查数据类型的方法:

  1. 对于简单类型的判断,我们可以使用 typeof
  2. 对于复杂类型的检测(数组、对象、函数等),我们可以使用 Object.prototype.toString

因此,在实际项目中,建议我们尽量使用 Object.prototype.toString 兼容所有数据类型,同时也可以通过书写相关 polyfill 来提高方法的兼容性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JavaScript中使用Spread运算符的八种方法总结

    下面我将详细讲解“JavaScript中使用Spread运算符的八种方法总结”的完整攻略。 什么是Spread运算符 Spread运算符是ES6中新引入的一种运算符,由三个连续的点符号…组成。它可以将一个可迭代对象(如数组或者字符串)展开成单个元素,或将多个元素指定为数组的元素,具有非常强大的功能。语法如下: // 展开数组成为元素 […array]…

    JavaScript 2023年5月27日
    00
  • Javascript 获取鼠标当前的位置实现方法

    以下为Javascript获取鼠标当前位置的完整攻略: 方法一:使用mouseevent事件 使用MouseEvent事件可以获取鼠标当前的位置,其中比较关键的有clientX和clientY属性。clientX和clientY属性是MouseEvent事件对象中的属性,它们表示鼠标相对于浏览器窗口可视区域的水平偏移量和垂直偏移量。 下面是一个使用Mouse…

    JavaScript 2023年6月11日
    00
  • JavaScript 防抖debounce与节流thorttle

    JavaScript 防抖 debounce 与节流 throttle 在 JavaScript 中,由于一些操作会频繁触发,如缩放、滚动等,可能会造成一些性能上的问题。而防抖和节流是一些用于解决这类问题的优化手段。 防抖 debounce 所谓防抖,就是指一个函数在一定时间内无论被触发多少次,都只会执行一次。这里的时间指的就是防抖的延迟时间,只有当该时间结…

    JavaScript 2023年6月11日
    00
  • 利用fecha进行JS日期处理

    日期是我们在开发过程中运用最广泛的数据类型之一。JavaScript中有很多原生的日期处理方法,但也存在一些缺点,例如有时候会显示不正确的时区或格式,因此有必要使用第三方库进行日期处理。其中一个优秀的库就是fecha。下面将为大家详细介绍如何使用该库进行JS日期处理。 1. 安装fecha 首先需要在项目中安装fecha库,可以使用npm进行安装。 npm …

    JavaScript 2023年6月11日
    00
  • jQuery EasyUI之验证框validatebox实例详解

    我将为您详细讲解关于“jQuery EasyUI之验证框validatebox实例详解”的完整攻略。 一、什么是validatebox validatebox是jQuery EasyUI插件中的一个用于验证输入框的工具。在Web开发中,我们经常需要对用户输入的数据进行验证,以保证数据的正确性和合法性。validatebox插件提供了强大的输入验证功能,可以对…

    JavaScript 2023年6月10日
    00
  • 使用VSCode调试Electron主进程的方法步骤

    使用VSCode调试Electron主进程需要以下步骤: 安装必要的npm包和配置Electron 在电脑上安装Node.js和npm包管理器,然后在Electron项目目录下,运行以下命令安装必要的npm包: npm i –save-dev electron 在package.json中,添加以下代码: "main": "m…

    JavaScript 2023年6月10日
    00
  • js实现前面自动补全位数的方法

    下面是详细讲解“js实现前面自动补全位数的方法”的完整攻略。 1. 简介 前置自动补全位数的方法就是指在数字前面添加相应数量的“0”,使得数字的位数达到指定的长度。在程序开发中,通常需要对数字进行前置自动补全位数操作,比如在电子表格中,在文件名中,签到表单中等等。 JavaScript提供了多种方法来完成这个任务,我们将介绍其中两种方法。 2. 方法一:利用…

    JavaScript 2023年5月28日
    00
  • js中的关联数组与普通数组详解

    JS中的关联数组与普通数组详解 在JavaScript中有两种基本的数组类型,分别是关联数组和普通数组。这两种数组的定义和使用方法有很大的不同。 1. 普通数组 普通数组是一种使用下标访问元素的数组。它提供了一个基于数字索引的快速访问列表的方法,下标从0开始,索引号连续排列。 1.1 定义和初始化 普通数组的定义可以使用[]或Array()两种方式进行。例如…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部