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

yizhihongxing

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

相关文章

  • 关于JS中match() 和 exec() 返回值和属性的测试

    了解您的需求后,以下是关于JS中match()和exec()方法的回答。 什么是match()和exec()方法? match()和exec()是JavaScript中用于字符串匹配的方法。它们都接受一个正则表达式作为参数,并返回一个匹配结果。 match()方法会在字符串中找到所有匹配正则表达式的部分,并返回这些部分组成的数组。 exec()方法会在字符串…

    JavaScript 2023年6月10日
    00
  • 2021年值得向Python开发者推荐的VS Code扩展插件

    下面是详细讲解“2021年值得向Python开发者推荐的VS Code扩展插件”的完整攻略。 1. 简介 VS Code 是一款免费开源的轻量级编辑器,支持多种编程语言,Python 是其中之一。丰富的扩展插件使得 VS Code 更加强大,可以让开发者更加高效地编写 Python 代码。本攻略将介绍一些值得向 Python 开发者推荐的扩展插件。 2. 推…

    JavaScript 2023年5月28日
    00
  • 浏览器调试动态js脚本的方法(图解)

    浏览器调试动态JS脚本的方法分为两种,分别是浏览器内置的调试器和利用第三方工具进行调试。 浏览器内置调试器 1. 使用console.log()调试 在JS代码中插入console.log()语句,输出相关变量和信息以确认代码是否按预期执行。使用该方法的优点是简单易用,缺点是调试过程相对繁琐,需要不断插入、删除console语句。示例代码如下: var nu…

    JavaScript 2023年5月27日
    00
  • javascript实现抽奖程序的简单实例

    让我详细讲解一下“javascript实现抽奖程序的简单实例”的攻略。 确定功能和需求 在开发抽奖程序之前,我们需要确认程序的功能和需求。根据通常的抽奖程序,我们需要确定以下的功能和需求: 可以设置抽奖人员名单 可以设置中奖人数 可以执行抽奖操作,随机选取中奖人员 可以重置程序,清空上次的中奖名单 HTML结构的构建 在确定功能和需求之后,我们需要构建HTM…

    JavaScript 2023年5月27日
    00
  • js通过八个点 拖动改变div大小的实现方法

    下面是“JS通过八个点拖动改变div大小的实现方法”的完整攻略。 1. 需求分析 我们需要实现一个可以通过拖动八个点来改变一个 div 元素的大小的功能。最好的做法是使用原生 JavaScript 实现,而不是使用第三方类库,这样我们可以更好地理解背后的实现原理。 2. HTML 结构 首先,我们需要准备一个 div 元素,用于展示效果。具体的实现方法是通过…

    JavaScript 2023年6月11日
    00
  • countUp.js实现数字动态变化效果

    为了实现数字动态变化效果,我们可以使用countUp.js这个插件库。下面是使用countUp.js实现数字动态变化效果的详细攻略: 步骤1:引入countUp.js 首先,我们需要在页面中引入countUp.js的库文件。可以通过CDN或下载的方式引入,例如: <script src="https://cdn.jsdelivr.net/np…

    JavaScript 2023年6月10日
    00
  • javascript圆盘抽奖程序实现原理和完整代码例子

    下面我将为你讲解”javascript圆盘抽奖程序实现原理和完整代码例子”的完整攻略。 1. 原理 圆盘抽奖程序的实现原理是基于旋转的动画效果来实现,通过原生JavaScript来控制CSS样式的变化,产生带有旋转效果的圆盘。 实现过程中,我们将圆盘分成多个扇形,每个扇形代表一个奖品,通过控制角度来确定圆盘停留所在的奖品。我们可以通过控制旋转速度、加速度等因…

    JavaScript 2023年6月11日
    00
  • 基于JS实现操作成功之后自动跳转页面

    下面我详细讲解一下“基于JS实现操作成功之后自动跳转页面”的完整攻略。 步骤一:编写触发跳转的函数 在JS中实现页面的跳转,通常需要我们编写一个函数,用来触发页面跳转的动作。先来看一个简单的示例代码: function jumpTo(url) { location.href = url; } 这是一个最简单的跳转函数,它只需要传入一个目标URL参数,即可实现…

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