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

接下来我将详细讲解“判断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日

相关文章

  • location.hash保存页面状态的技巧

    当我们需要保存页面状态,以便于后续操作时,可以借助浏览器提供的location.hash协议来实现。下面,让我详细讲解一下“location.hash保存页面状态的技巧”的完整攻略。 什么是location.hash location.hash指的是URL中#及其后面的内容。比如,http://www.example.com/#section1中的#sect…

    JavaScript 2023年6月11日
    00
  • 教你javascript如何获取指针的位置

    教你javascript如何获取指针的位置 什么是指针? 在计算机中,指针是一个变量,存储了一个内存地址,该地址指向一个数据单元。指针可以被用来直接访问和修改内存中的数据,因此它在程序中非常有用。 在JavaScript中,由于其具有自动内存管理机制,因此没有指针类型。但是,在某些情况下,我们需要获取鼠标指针在页面中的位置。 获取鼠标指针位置 在JavaSc…

    JavaScript 2023年6月11日
    00
  • 深入理解Ajax的get和post请求

    关于深入理解Ajax的get和post请求,下面是我分享的完整攻略。 理解Ajax 什么是Ajax? Ajax是“Asynchronous JavaScript And XML”的缩写,意思是“异步JavaScript和XML”。 简单来说,Ajax使得Web应用程序可以在不重新加载页面的情况下进行异步通信。 这意味着您可以使用JavaScript向服务器发…

    JavaScript 2023年6月11日
    00
  • JS导出PDF插件的方法(支持中文、图片使用路径)

    下面给出JS导出PDF插件的方法及示例说明。 标题 1. 安装jsPDF 首先,我们需要安装jsPDF这个插件。打开命令行窗口,进入我们项目所在的目录,运行以下命令: npm install jspdf –save 2. 导入中文字体 jsPDF默认不支持中文字体,我们需要引入一些中文字体。这里以SimSun为例。 <!– 在html文件里引入中文…

    JavaScript 2023年5月27日
    00
  • Asp.Net 不同的OnClick事件区别小结(onserverclick,onclientclick)

    Asp.Net中常用的OnClick事件主要有两种,分别是onserverclick和onclientclick,并且它们在应用场景和使用方法上也有所差别。 1. onserverclick 事件 onserverclick 事件通常用于向服务器端发送请求,server端通过回调函数的形式完成事件绑定,一般在 aspx.cs 文件中实现。 <asp:B…

    JavaScript 2023年6月11日
    00
  • js中匿名函数的N种写法

    接下来我将为您详细讲解 “js中匿名函数的N种写法” 的攻略。该攻略将介绍匿名函数的基本写法、立即执行函数、闭包、箭头函数、生成器函数和ES6中的模板字符串等多种写法,下面进行详细说明。 基本写法 匿名函数最基本最常见的写法如下: (function(){ //代码块 })(); 这其实是一个立即执行函数的写法,将一个匿名函数用小括号括起来,并在最后加上一个…

    JavaScript 2023年5月27日
    00
  • JS的数组的扩展实例代码

    首先我们先来了解一下JS的数组的扩展。ES6引入了许多新的数组扩展方法,大大提高了我们处理数组时的效率。以下是几个常用的方法。 扩展操作符 使用扩展操作符,可以轻松的将一个数组展开成另一个数组: const arr1 = [1, 2, 3]; const arr2 = […arr1, 4, 5, 6]; console.log(arr2); // [1,…

    JavaScript 2023年5月27日
    00
  • 基于Three.js实现3D玉兔效果的示例代码

    下面是我对于“基于Three.js实现3D玉兔效果的示例代码”的详细攻略: 1. 了解Three.js Three.js 是一个基于 WebGL 的 3D 渲染库,可以让我们在浏览器中创建复杂的 3D 呈现。在使用 Three.js 前,需要了解 WebGL、3D 基础概念等知识。 2. 准备工作 在开始我们的3D玉兔之旅前,需要先准备好环境: 2.1 引入…

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