在javaScript中检测数据类型的几种方式小结

接下来我将详细讲解在JavaScript中检测数据类型的几种方式小结。

检测数据类型的几种方式

typeof

typeof 操作符可以返回值的数据类型字符串。它只有一些简单的规则,可以处理大多数数据类型,但也存在一些特殊情况。如下所示:

typeof 123; // "number"
typeof "123"; // "string"
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof null; // "object"
typeof {}; // "object"
typeof []; // "object"
typeof function() {}; // "function"

var fn = function() {}; // "typeof" 返回字符串是 "function"
typeof fn; // "function"

typeof NaN; // "number"
typeof Infinity; // "number"

Object.prototype.toString.call()

Object.prototype.toString.call() 方法用于精确地检测对象数据类型。它将返回一个以 [object 类型] 格式表示的字符串。如下所示:

Object.prototype.toString.call(123); // "[object Number]"
Object.prototype.toString.call("123"); // "[object String]"
Object.prototype.toString.call(true); // "[object Boolean]"
Object.prototype.toString.call(undefined); // "[object Undefined]"
Object.prototype.toString.call(null); // "[object Null]"
Object.prototype.toString.call({}); // "[object Object]"
Object.prototype.toString.call([]); // "[object Array]"
Object.prototype.toString.call(function () {}); // "[object Function]"
Object.prototype.toString.call(new Date()); // "[object Date]"
Object.prototype.toString.call(/test/gi); // "[object RegExp]"

instanceof

instanceof 运算符可以检测一个对象是否是另外一个对象的实例。如下所示:

123 instanceof Number; // false
"123" instanceof String; // false
true instanceof Boolean; // false
undefined instanceof Object; // false
({}) instanceof Object; // true
[] instanceof Array; // true
function() {} instanceof Function; // true

注意:123"123"trueundefined 不是对象,不能作为 instanceof 运算符的左操作数。如果使用它们,将会抛出一个 ReferenceError 异常。

总结

在以上的三种方式中, typeof 在检测大多数类型时起到了良好的作用,但是在检测 nullArray 时会出现问题。而 Object.prototype.toString.call() 是最为常用的方式,它可以精确地检测所有类型。 instanceof 运算符则主要用于检测一个对象是否是某个类的实例。

示例

function getType(value) {
  return Object.prototype.toString.call(value).slice(8, -1);
}

getType(123); // "Number"
getType("123"); // "String"
getType(true); // "Boolean"
getType(undefined); // "Undefined"
getType(null); // "Null"
getType({}); // "Object"
getType([]); // "Array"
getType(function() {}); // "Function"
function isClass(obj, cls) {
  while (obj && obj.__proto__) {
    if (obj.__proto__ === cls.prototype) {
      return true;
    }
    obj = obj.__proto__;
  }
  return false;
}

isClass(new Number(123), Number); // true
isClass(new String("123"), String); // true
isClass(new Boolean(true), Boolean); // true
isClass(new Object(), Object); // true
isClass([], Array); // true
isClass({}, Object); // true
isClass(function() {}, Function); // true

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在javaScript中检测数据类型的几种方式小结 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • javascript 添加和移除函数的通用方法

    在Javascript编程中,我们常常需要动态地添加或者移除函数,这是很常见的需求。而实现这样的功能,我们可以使用Javascript的内置方法,或者自定义方法来实现。下面我们将从两个方面来详细讲解Javascript添加和移除函数的通用方法。 方法一:使用内置方法实现添加和移除函数 在Javascript中,我们可以使用addEventListener()…

    JavaScript 2023年5月27日
    00
  • javascript异步编程的六种方式总结

    JavaScript异步编程的六种方式总结 随着现代Web应用程序变得越来越复杂,异步编程成为了必不可少的开发模式。在JavaScript中,我们可以通过多种方式来实现异步编程。本文将介绍JavaScript中的六种常见方式来处理异步编程。 1. 回调函数 回调函数是这六种方式中应用最广泛的一种方式。回调函数是将一个函数作为参数传递给另一个函数,在异步操作完…

    JavaScript 2023年5月27日
    00
  • JavaScript实现表单验证示例

    下面是针对“JavaScript实现表单验证示例”的完整攻略: 1. 表单验证的基本思路 前端表单验证的基本思路是,当用户提交表单时,先阻止表单的默认提交行为,然后通过JavaScript对表单进行内容的检测和验证,如果发现问题,则提示用户并阻止表单的提交。否则,允许表单进行提交操作。 通常,表单验证的实现流程如下: 针对表单的提交事件进行监听; 在提交事件…

    JavaScript 2023年6月10日
    00
  • JS散列表碰撞处理、开链法、HashTable散列示例

    JS散列表碰撞处理是指在散列表中插入元素时,如果发现插入位置已经有元素,就会出现碰撞的情况。碰撞处理的目标是保持散列表中没有重复的元素。下面将介绍两种JS散列表的碰撞处理方法:开链法和线性探测法。 开链法 开链法也被称为拉链法,是一种常用的碰撞处理技术。它的基本思想是将每个散列值的链表放置在散列表的对应位置上,如果插入时与该链表中的某个元素发生碰撞,就将新元…

    JavaScript 2023年5月28日
    00
  • JavaScript中常用的运算符小结

    JavaScript中常用的运算符小结 前言 在JavaScript的世界里,运算符无疑是最常用到的知识点之一。掌握运算符,可以让我们更加高效地完成任务。这篇文章将会概述JavaScript中常用的运算符,包括算术运算符、比较运算符、逻辑运算符和位运算符。 算术运算符 算术运算符主要用于数值运算,常见的算术运算符有加(+)、减(-)、乘(*)、除(/)和取模…

    JavaScript 2023年5月18日
    00
  • 微前端qiankun沙箱实现源码解读

    我们来详细讲解一下“微前端qiankun沙箱实现源码解读”的完整攻略。 什么是微前端 首先,我们需要知道什么是微前端。简单地说,微前端是一种前端架构模式,它将大型Web应用程序分解为较小的、易于管理的模块,这些模块可以独立地开发、测试和部署。每个模块可以由不同的团队开发,并且可以以不同的速度进行更新和发布。这种模式使得公司可以更加灵活地开发和部署前端应用程序…

    JavaScript 2023年6月11日
    00
  • JS 遍历 json 和 JQuery 遍历json操作完整示例

    下面为你详细讲解JS遍历JSON和jQuery遍历JSON操作的完整攻略。 JS 遍历 JSON 1. 遍历JSON方法 遍历JSON有两种方法:for…in 和 Object.keys()。 2. for…in 遍历JSON for…in 循环可以用于遍历 JSON 对象以及数组: const myObj = { name: "Joh…

    JavaScript 2023年5月27日
    00
  • yepnope.js 异步加载资源文件

    yepnope.js是一个轻量级的异步资源加载工具,可以帮助我们在加载网页中的资源文件时,进行更灵活高效的操作。下面我为大家介绍一下如何使用yepnope.js进行异步加载资源文件的操作。 安装yepnope.js yepnope.js可以通过npm安装,也可以直接在HTML文件中通过CDN链接引入。 <!DOCTYPE html> <ht…

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