详解JavaScript类型判断的四种方法

详解JavaScript类型判断的四种方法

JavaScript 是一种弱类型语言,在使用时需要对数据的类型进行判断和转换。本文将介绍常见的 JavaScript 类型判断方法,包括:

  1. typeof
  2. instanceof
  3. Object.prototype.toString.call()
  4. constructor

1. typeof

typeof 是 JavaScript 内置的操作符,用于判断一个变量的类型。它可以返回以下字符串中的一个:undefined, boolean, number, string, object, function。

示例:

var a;
console.log(typeof a); // "undefined"

var b = "hello";
console.log(typeof b); // "string"

var c = 123;
console.log(typeof c); // "number"

var d = true;
console.log(typeof d); // "boolean"

var e = { foo: 'bar' };
console.log(typeof e); // "object"

var f = function() {};
console.log(typeof f); // "function"

需要注意的是,typeof null 返回 "object",这是一个旧有的 Bug。

2. instanceof

instanceof 可以用于判断对象的原型链上是否存在一个构造函数。它接受两个参数,一个是对象实例,一个是构造函数。若对象实例在其原型链上能找到这个构造函数,则返回 true,否则返回 false。

示例:

function Person() {
}
var person = new Person();

console.log(person instanceof Person); // true
console.log(person instanceof Object); // true

var str = "hello";
console.log(str instanceof String); // false

var num = 123;
console.log(num instanceof Number); // false

var bool = true;
console.log(bool instanceof Boolean); // false

var obj = {};
console.log(obj instanceof Object); // true

var arr = [];
console.log(arr instanceof Array); // true
console.log(arr instanceof Object); // true

var date = new Date();
console.log(date instanceof Date); // true
console.log(date instanceof Object); // true
console.log(date instanceof Number); // false

需要注意的是,instanceof 只能用于判断对象,而不能用于判断基本类型。

3. Object.prototype.toString.call()

Object.prototype.toString() 方法返回一个表示当前对象类型的字符串。这个方法可以用来判断一个对象的类型,也可以用来判断基本类型的值类型。

示例:

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

需要注意的是,这种方法也可以用来识别出它所在上下文环境的类型,例如:

console.log(Object.prototype.toString.call(arguments)); // "[object Arguments]"
console.log(Object.prototype.toString.call(document.getElementsByTagName("body"))); // "[object HTMLCollection]"
console.log(Object.prototype.toString.call(document.createElement("div"))); // "[object HTMLDivElement]"

4. constructor

constructor 是 JavaScript 对象的一个属性,指向创建该对象的函数。使用 constructor 属性进行类型判断需要注意原型链。

示例:

function Person() {}
var person = new Person();

console.log(person.constructor === Person); // true

var str = "hello";
console.log(str.constructor === String); // true

var num = 123;
console.log(num.constructor === Number); // true

var bool = true;
console.log(bool.constructor === Boolean); // true

var obj = {};
console.log(obj.constructor === Object); // true

var arr = [];
console.log(arr.constructor === Array); // true

var date = new Date();
console.log(date.constructor === Date); // true

需要注意的是,在继承中,如果一个对象的原型链上存在多个构造函数,那么使用 constructor 判断类型时,将会得到第一个构造函数。

function Animal() {} 
function Dog() {} 

Dog.prototype = new Animal();
Dog.prototype.constructor = Dog;

var dog = new Dog();
console.log(dog.constructor); // Animal

以上就是四种常见的 JavaScript 类型判断方法。在实际开发过程中,需要根据情景选用合适的判断方法,进行类型校验和转换。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解JavaScript类型判断的四种方法 - Python技术站

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

相关文章

  • JavaScript事件对象event用法分析

    下面是关于JavaScript事件对象(event)的详细解析: 一、什么是JavaScript事件对象(event) 在JavaScript中,事件是当HTML文档中发生某些特定行为时所发生的结果。比如用户单击了一个按钮、鼠标移动到某一个元素上等交互行为。这些都可以被JavaScript捕捉到,并进行相应的处理。在这些事件中,事件对象(event)是事件发…

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

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

    JavaScript 2023年6月11日
    00
  • JavaScript数组函数unshift、shift、pop、push使用实例

    JavaScript数组函数unshift、shift、pop、push使用实例 在JavaScript中,数组是一种非常重要的数据结构。在进行数组处理时,通常需要使用四个重要的数组函数unshift、shift、pop、push。本文将会对它们进行详细讲解,并提供示例来帮助您了解它们的使用。 unshift()函数 unshift()函数可以向数组的开头添…

    JavaScript 2023年5月27日
    00
  • javascript 时间显示代码集合(Date对象)

    JavaScript 时间显示代码集合(Date 对象) JavaScript 中的 Date 对象可以非常方便地进行时间处理和日期显示。本文将详细讲解 Date 对象的使用方法和常见示例。 获取当前时间 可以使用如下代码获取当前时间: var now = new Date(); 此时 now 变量将保存当前时间,并且格式为一个 Date 对象。 格式化时间…

    JavaScript 2023年5月27日
    00
  • 浅析JavaScript中的对象类型Object

    下面我将详细讲解“浅析JavaScript中的对象类型Object”的完整攻略。 1. 什么是对象? 对象是 JavaScript 的核心数据类型之一,它是一组属性的集合,每个属性都由键值对组成。其中,键是字符串类型,值可以是任何数据类型,也可以是另一个对象。对象是使用大括号{}定义的。 例如,以下就是一个简单的对象: let person = { name…

    JavaScript 2023年5月27日
    00
  • JS中的Replace()传入函数时的用法详解

    针对这个主题,我可以向你详细讲解JS中replace()方法在传入函数时的用法。 1. replace()方法基本用法 首先,我们需要先了解一下replace()方法的基本用法。replace()方法可以用于字符串的替换操作,可以将某个字符串匹配到的内容替换成新的字符串。其基本语法如下: str.replace(regexp|substr, newSubst…

    JavaScript 2023年5月27日
    00
  • 在JavaScript中使用开平方根的sqrt()方法

    当在JavaScript代码中需要进行数字计算时,常常需要使用特定的数学函数。其中一个很常用的函数就是开平方根函数。在JavaScript中,可以使用内置的 Math.sqrt() 方法来计算一个数字的开平方根。 使用方法 Math.sqrt() 方法需要传递一个数字作为参数,然后返回这个数字的开平方根值。示例代码如下: let num = 25; let …

    JavaScript 2023年5月27日
    00
  • javascript时间差插件分享

    下面我就为大家详细讲解一下“JavaScript时间差插件分享”的完整攻略。 一、什么是时间差插件? 时间差插件是一款 JavaScript 插件,它可以计算两个时间之间的时间差并将其格式化输出。时间差插件能够处理的时间格式包括:时间戳、ISO9601 格式或者自定义格式的时间字符串。 二、如何使用时间差插件? 1. 下载时间差插件并引入到网页中 首先,我们…

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