iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript数据类型检测实现方法详解
  • 109
分享到

JavaScript数据类型检测实现方法详解

JavaScript数据类型检测JS数据类型检测 2022-11-13 19:11:23 109人浏览 泡泡鱼
摘要

目录一、typeof二、instanceof三、Object.prototype.toString.call()面试问题一、typeof 优点:能快速判断基本数据类型,除了 Null

一、typeof

  • 优点:能快速判断基本数据类型,除了 Null
  • 缺点:不能判别 ObjectArrayNull ,都返回 object;判别引用类型除函数显示 function外,其他显示为 object
console.log(typeof 55);              // number
console.log(typeof true);            // boolean
console.log(typeof 'aa');            // string
console.log(typeof undefined);       // undefined
console.log(typeof function(){});    // function
console.log(typeof Symbol("foo"));   // symbol
console.log(typeof 553119869n);      // bigint
// 不能判别
console.log(typeof []);   // object
console.log(typeof {});   // object
console.log(typeof null); // object

二、instanceof

MDN:

instanceof 运算符 用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。

理解:判断在其原型链中能否找到该类型的原型。

语法:

object instanceof constructor

function D(){}
var o = new D();
o instanceof D;  // true
o instanceof Object; // true
  • 优点:能区分ArrayObjectFunction,适用于判断自定义的类实例对象
  • 缺点:不能判断 NumberBooleanString 基本数据类型
console.log(55 instanceof Number);                // false
console.log(true instanceof Boolean);             // false 
console.log('aa' instanceof String);              // false  
console.log([] instanceof Array);                 // true
console.log(function(){} instanceof Function);    // true
console.log({} instanceof Object);                // true

String 对象和 Date 对象都属于 Object 类型 和 一些特殊情况:

var simpleStr = "a simple string";
var objstr = new String();
var newStr = new String("String created with constructor");
var aDate = new Date();
var myNonObj = Object.create(null);
simpleStr instanceof String; // false,非对象实例,因此返回 false
objStr instanceof String;    // true
newStr instanceof String;    // true
objStr instanceof Object;    // true       
myNonObj instanceof Object; // false,一种创建非 Object 实例的对象的方法
aDate instanceof Date;      // true
aDate instanceof Object;    // true

三、Object.prototype.toString.call()

  • 优点:精准判断数据类型,所有原始数据类型都是能判断;
  • 缺点:写法繁琐,最好进行封装后使用
var toString = Object.prototype.toString;
console.log(toString.call(55));           // [object Number]
console.log(toString.call(true));         // [object Boolean]
console.log(toString.call('aa'));         // [object String]
console.log(toString.call([]));           // [object Array]
console.log(toString.call(function(){})); // [object Function]
console.log(toString.call({}));           // [object Object]
console.log(toString.call(undefined));    // [object Undefined]
console.log(toString.call(null));         // [object Null]
console.log(toString.call(Math));         // [object Math]
console.log(toString.call(Set));          // [object Function] Set 构造函数
console.log(toString.call(Array));        // [object Function] Array 构造函数
console.log(toString.call(Map));          // [object Function]
console.log(toString.call(Date));         // [object Function]
console.log(toString.call(new Set()));    // [object Set]
console.log(toString.call(new Array()));  // [object Array]
console.log(toString.call(new Map()));    // [object Map]
console.log(toString.call(new Date()));   // [object Date]
function D(){}
console.log(toString.call(D));            // [object Function]
console.log(toString.call(new D()));      // [object Object]

面试问题

如何判断变量是否为数组

let arr = []
console.log(Array.isArray(arr));    // true
arr.__proto__ === Array.prototype;  // true
arr instanceof Array;               // true
Object.prototype.toString.call(arr);// [object Array]

判断是否是 Promise 对象

function isPromise(val) {
  return (
    typeof val.then === 'function' &&
    typeof val.catch === 'function'
  )
}
let p = new Promise((resolve, reject) => {});
console.log(isPromise(p)); // true

到此这篇关于javascript数据类型检测实现方法详解的文章就介绍到这了,更多相关JS数据类型检测内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScript数据类型检测实现方法详解

本文链接: https://www.lsjlt.com/news/170718.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript数据类型检测实现方法详解
    目录一、typeof二、instanceof三、Object.prototype.toString.call()面试问题一、typeof 优点:能快速判断基本数据类型,除了 Null...
    99+
    2022-11-13
    JavaScript数据类型检测 JS数据类型检测
  • JavaScript中检测数据类型的四种方法
    目录1. typeof2. instanceof3. constructor(构造函数)4. Object.prototype.toString.call()前言:在介绍检测数据类型...
    99+
    2022-11-12
  • JavaScript数据类型检测功能如何实现
    本文小编为大家详细介绍“JavaScript数据类型检测功能如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript数据类型检测功能如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、t...
    99+
    2023-07-04
  • JavaScript类型检测的方法实例教程
    前言 JavaScript是web前端广泛应用的语言之一,在网页应用制作、脚本制作、小程序等诸多领域具有不可替代的的地位。笔者学习了一端时间的前端,颇感JS知识点的繁碎,故将学习到...
    99+
    2022-11-12
  • JavaScript中检测数据类型的四种方法总结
    目录检测数据类型1:typeof检测数据类型2:instanceof检测数据类型3:constructor检测数据类型4:Object.prototype.toString.call...
    99+
    2023-05-16
    JavaScript检测数据类型方法 JavaScript检测数据类型 JavaScript数据类型
  • JavaScript中怎么检测数据类型
    本篇内容介绍了“JavaScript中怎么检测数据类型”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!检测数据类型1:typeof其返回结果都...
    99+
    2023-07-06
  • JavaScript 检测文件的类型的方法
    目录一、如何查看图片的二进制数据二、如何区分图片的类型三、如何检测图片的类型3.1 定义 readBuffer 函数3.2 定义 check 函数3.3 检测 PNG 图片类型我们会...
    99+
    2022-11-12
  • JavaScript中检测数据类型的四种方法分别是什么
    这期内容当中小编将会给大家带来有关JavaScript中检测数据类型的四种方法分别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:在介绍检测数据类型的方法之前,先说说JavaScript中数据类...
    99+
    2023-06-26
  • 利用OpenCV实现YOLO对象检测方法详解
    目录前言什么是YOLO物体检测器?项目结构检测图像检测视频前言 本文将教你如何使用YOLOV3对象检测器、OpenCV和Python实现对图像和视频流的检测。用到的文件有yolov3...
    99+
    2022-11-12
  • javascript七大数据类型详解
    目录前言:详细介绍:练习:总结 前言: 各大语言都会有基本类型如python,java,c系列等,基本类型的存在是不可或缺的,它就好似我们生活中算数中的整数,汉字中的中文,它就是来...
    99+
    2022-11-12
  • C#实现数组元素的数据类型转换方法详解
    目录一、场景假设二、解决方案三、问题延伸四、数组类的静态转换方法五、刨根问底一、场景假设 假设有一串字符串如下所示,字符串中的数字之间已用英文状态下的逗号隔开。要求用此字符串中的数字...
    99+
    2022-11-13
  • JavaScript的基础语法和数据类型详解
    目录引入JavaScript1.内部标签2.外部引入基础语法数据类型number字符串布尔值逻辑运算比较运算符数组对象流程控制Map和Setiterator总结引入JavaScrip...
    99+
    2022-11-12
  • JavaScript原始数据类型Symbol的用法详解
    目录Symbol介绍与创建设置Symbol属性的注意点Symbol属性名的遍历Symbol内置值Symbol.hasInstanceSymbol.isConcatSpreadable...
    99+
    2022-11-13
    JavaScript Symbol JS Symbol
  • JavaScript实现网络测速的方法详解
    目录一、背景知识二、Network Information API三、测量 ping 和 jitter 值四、测量下载速度五、总结一、背景知识 在我们的日常生活中离不开网络,而网络的...
    99+
    2023-01-05
    JavaScript网络测速 JavaScript 测速 JavaScript网络
  • 详解JavaScript原始数据类型Symbol
    目录简介描述信息命名冲突私有属性总结简介 创建symbol变量最简单的方法是用Symbol()函数。sysmbol变量有两点比较特别: 1.它可以作为对象属性名。只有字符串和 sym...
    99+
    2022-11-12
  • javascript基础之数据类型详解
    目录1.数据类型1.1 为什么需要数据类型1.2 变量的数据类型1.3 数据类型分类2. 简单数据类型(基本数据类型)2.1 数字型Number1. 数字型进制2.数字型范围2.2 ...
    99+
    2022-11-12
  • JavaScript数据类型的转换详解
    目录数据类型的转换概述强制转换Number()String()Boolean()自动转换自动转换为布尔值自动转换为字符串自动转换为数值数据类型的转换 概述 JavaScript是一种...
    99+
    2022-12-22
    JavaScript数据类型转换 JavaScript数据类型 JS 数据类型转换
  • js如何实现检测类数组对象的函数方法
    这篇文章将为大家详细讲解有关js如何实现检测类数组对象的函数方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。如下所示://判定o是否是一个类数组对象 //字符串和函数有...
    99+
    2022-10-19
  • JavaScript第七种数据类型Symbol的用法详解
    目录一、什么是Symbol二、作为属性名的Symbol三、Symbol中的方法1、Symbol.for()2、Symbol.keyFor()一、什么是Symbol Symbol是ES...
    99+
    2022-11-13
  • 详解Redis数据类型实现原理
    目录1. 对象的类型与编码① type属性② encoding 属性和 *prt 指针2. 字符串对象① 编码② 编码的转换3. 列表对象① 编码② 编码转换4. 哈希对象① 编码②...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作