js学习总结_基于数据类型检测的四种方式(必看)

发布时间 - 2026-01-11 02:09:45    点击率:

1、typeof 用来检测数据类型的运算符 

console.log(typeof 12)//Number

使用typeof检测数据类型,首先返回的都是字符串 ,其次字符串中包含了对应的数据类型

例如:"number"、"string"、"boolean"、"undefined"、"function"、"object"

console.log(typeof typeof function(){}) //string

局限性:

typeof null -> "object"

不能具体的细分是数组还是正则,还是对象中其他的值,因为使用typeof检测数据类型,对于对象数据类型中的值,最后返回的结果都是"object"

2、instanceof 检测某一个实例是否属于某个类

var obj = [12,23];
    console.log(obj instanceof Array);

局限性:

对于基本数据类型来说,字面量方式创建出来的结果和实例方式创建出来的结果是有一定的区别的。从严格意义上讲,只有实例创建出来的结果才是标准的对象数据类型值,也是标准的Number这个类的一个实例;对于字面量方式创建出来的结果是基本的数据类型值,不是严谨的实例,但是由于JS的松散特点,导致了可以使用Number.prototype上的方法

1)、不能用来检测和处理字面量方式创建出来的基本数据类型值

console.log(1 instanceof Number);//false
console.log(new Number(1) instanceof Number)//true

2)、instanceof的特性:只要在当前实例的原型链上,我们用其检测的结果都为true

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

    function fn(){

    }
    console.log(fn instanceof Function);//true
    console.log(fn instanceof Object);//true

3、constructor 构造函数 作用和instanceof非常的相似  constructor可以处理基本数据类型的检测

constructor检测Object和instanceof不一样 一般情况下是检测不了的

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

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

局限性:我们可以把类的原型进行重写,在重写的过程中很有可能出现把之前的constructor给覆盖掉了,这样检测出来的结果就不准确了。

对于特殊的数据类型null和undefined,他们所属的类是Null和Undefined,但是浏览器把这两个类保护起来了,不允许我们在外面访问使用

4、Object.prototype.toString.call() 最准确最常用的方式 各种类型的都可以检测(基本和引用)

首先获取Object原型上的toString方法,让方法执行,并且改变方法中的this关键字的指向

toString的理解:

表面上看应该是转化成字符串,但是某些toString方法不仅仅是转换为字符串

对于Number、String、Boolean、Array、RegExp、Date、Function原型上的toString方法都是把当前的数据类型转化为字符串的类型(他们的作用仅仅是用来转换为字符串的)

Object.prototype.toString()并不是用来转化为字符串的,他的作用是返回当前方法执行主体(方法中的this)所属类的详细信息。  

({name:"李四"}).toString() //[object object]
    Math.toString()//[object Math]

({name:"李四"}).toString() //[object object]
    Math.toString()//[object Math]

    var obj = {name:"张三"};
    console.log(obj.toString())//toString中的this是obj,返回的是obj所属的类的信息。[object Object] 第一个object代表当前实例是对象数据类型的(这个是固定的),第二个Object代表的是obj所属的类是Object

console.log((1).toString()) // "1" Number.prototype.toString转化为字符串

console.log((128).toString(2/8/10)) 把数字转化为2进制、8进制、10进制

所以上面的方法的检测如下 

var ary = [];
    console.log(Object.prototype.toString.call(ary))//[object Array]

以上这篇js学习总结_基于数据类型检测的四种方式(必看)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# js检测数据类型  # JS中检测数据类型的几种方式及优缺点小结  # 浅谈javascript的数据类型检测  # 关于JS数据类型检测的多种方式总结  # js数据类型检测总结  # JavaScript中检测数据类型的四种方法  # javascript基本数据类型及类型检测常用方法小结  # 在javaScript中检测数据类型的几种方式小结  # JavaScript数据类型检测代码分享  # JS数组索引检测中的数据类型问题详解  # js中各种数据类型检测和判定的实战示例  # 都是  # 转化为  # 的是  # 给大家  # 重写  # 转换为  # 李四  # 他们的  # 结果是  # 第一个  # 才是  # 就不  # 是用来  # 很有  # 其他的  # 有一定  # 我们可以  # 这两个  # 希望能  # 第二个 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: js实现点击每个li节点,都弹出其文本值及修改  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  使用豆包 AI 辅助进行简单网页 HTML 结构设计  javascript如何操作浏览器历史记录_怎样实现无刷新导航  Laravel用户密码怎么加密_Laravel Hash门面使用教程  如何快速上传自定义模板至建站之星?  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  如何基于云服务器快速搭建个人网站?  Python文件异常处理策略_健壮性说明【指导】  如何快速生成专业多端适配建站电话?  Laravel集合Collection怎么用_Laravel集合常用函数详解  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  如何在阿里云域名上完成建站全流程?  教你用AI润色文章,让你的文字表达更专业  浅谈javascript alert和confirm的美化  Bootstrap CSS布局之列表  高端建站如何打造兼具美学与转化的品牌官网?  iOS验证手机号的正则表达式  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  网站优化排名时,需要考虑哪些问题呢?  在线教育网站制作平台,山西立德教育官网?  Laravel观察者模式如何使用_Laravel Model Observer配置  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  JS实现鼠标移上去显示图片或微信二维码  如何在IIS服务器上快速部署高效网站?  Laravel API资源类怎么用_Laravel API Resource数据转换  JavaScript实现Fly Bird小游戏  奇安信“盘古石”团队突破 iOS 26.1 提权  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Linux系统命令中tree命令详解  如何用虚拟主机快速搭建网站?详细步骤解析  如何用AI帮你把自己的生活经历写成一个有趣的故事?  如何快速完成中国万网建站详细流程?  音乐网站服务器如何优化API响应速度?  Laravel如何生成URL和重定向?(路由助手函数)  Python自动化办公教程_ExcelWordPDF批量处理案例  如何用好域名打造高点击率的自主建站?  如何在IIS中新建站点并解决端口绑定冲突?  浅谈redis在项目中的应用  用v-html解决Vue.js渲染中html标签不被解析的问题  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何用腾讯建站主机快速创建免费网站?  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  大同网页,大同瑞慈医院官网?  在centOS 7安装mysql 5.7的详细教程  大连 网站制作,大连天途有线官网?