首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Js检测数据类型

, 除了null其他都会返回正常的结果 对于引用数据类型,除了function其他都会返回object 对于null,会返回object,历史遗留问题,也是bug,原因在于JS初始版本使用的是32位系统...,为了性能考虑使用低位存储变量的类型信息,而000开头代表的是对象,null表示全零,所以对象类型被误判为object.虽然现在的内部类型判断代码已经改变了,但是对于这个Bug缺一直流传下来了 对于function...let str = new String('我是字符串') console.log(str instanceof String) //true 检测引用数据的类型全部正确,所以一般来讲这个方法我们是用于检测引用数据类型的...数组的原型会指向Array.prototype,间接的指向了Object.prototype,所以[]也属于对象返回正确,所以说instanceof判断的是两个对象是否属于实例关系,而不会直接返回数据类型...包装类也是对象,既然都是对象为什么调用toString()返回结果不一样?

3K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    通过JS检测当前设备类型

    背景: 基友做了个APP,发了一排二维码,然后互相吐槽了一下,发现移动应用出现也一年了,虽然很简单,但是好像都懒得通过写个JS来判断然后发一个二维码让大家下载应用。...简介: 提供了几个JS接口,通过这几个JS接口,可以轻松获取到当前打开页面的浏览器类型,然后根据类型跳转到对应的链接。同时也提供了两个demo方便大家参考。...提供接口: ZixieJS.browser.isPc 功能:判断平台是不是PC 参数:无 返回值:是否为PC设备 ZixieJS.browser.getDevices 功能:判断设备类型 参数:无 返回值...核心代码 — Demo2: Demo2相关代码 - download.html: Demo2核心代码 — index.html:Demo首页 — res:页面相关资源 - brower.js...:核心代码 — tools.html:JS调用的整体事例。

    2.3K90

    重学JS基础-类型检测和转换

    -对象类型的变量或值,或者null(这个是js历史遗留问题,将null作为object类型处理,因为设计的时候null是全 0,而对象是000开头,所以有这个误判) 'function'...function 2.instance of 方法 typeof检测出Object类型的变量后不能进一步检测出是哪种Object(比如Array,Date) 而instanceof用于判断一个变量是否某个对象的实例比如...最大的用处便是用来检测自定义类,并且由于内部机制是通过instanceof是通过判断左边对象的原型琏中是否存在右边构造函数的prototype来判断类型,所以它也能检测继承关系 一般情况 function...,后台就会创建一个对应的基本包装类型对象,从而让我们能够调用一些方法来操作这些数据。...new String("some text"); var s2 = s1.substring(2); s1 = null; 这样就完成装箱,我们也就能在s1上调用方法了 拆箱转换:将引用类型对象转换为对应的值类型对象

    1.4K10

    JS的数据类型及其检测

    其中基本数据类型包括 Undefined、Null、Boolean、Number、String、Symbol (ES6 新增,表示独一无二的值),而引用数据类型统称为 Object 对象,主要包括对象、...只要在当前实例的原型链上,我们用其检测出来的结果都是 true。在类的原型继承中,我们最后检测出来的结果未必准确。...但 constructor 检测 Object 与 instanceof 不一样,还可以处理基本数据类型检测。...global的引用 参考资料 1、【文章】[ JS 进阶 ] 基本类型 引用类型 简单赋值 对象引用(推荐) 2、JS 判断数据类型的三种方法 3、JS 中的数据类型及判断 4、Javascript 判断变量类型的陷阱...与 正确的处理方式 5、判断 JS 数据类型的四种方法

    1.7K20

    【JavaScript】内置对象 - 数组对象 ① ( 数组简介 | 数组创建 | 数组类型检测 )

    一、数组对象 1、数组简介 在 JavaScript 中 , 提供了一种 内置对象 " 数组 " , 用于存储一系列的值 , 这些值可以是 任意类型的数据 , 包括 数字 / 字符串 / 对象 / 其他数组...= new Array(); 创建一个空的数组 , 元素数量为 0 ; 创建非空数组 : var arr = new Array(1, 2, 3); 创建一个非空的数组 , 并进行初始化 ; 3、数组检测...- Array.isArray() 方法 调用 Array.isArray(arr) 函数 , 可以 检测 arr 变量 是否是 数组对象 , 传入的参数是要检测的 变量 ; Array.isArray...zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray 语法 : Array.isArray(value) value 参数 是 要检测对象...- instanceof 运算符 使用 instanceof 运算符 可以用来 检测一个对象是否是 某个 构造函数 的实例 , 也就是可以检测 某个对象是否由 Array 构造函数 创建的 ;

    8510

    JS 数据类型的四种检测方法

    简介 我们在代码中经常要对数据类型进行判断,大家熟知的应该是 typeof,那么它有什么不足,有没有其他方法来进行类型检测呢? 1. typeof JS 的值包括基本类型和引用类型。..." // 无法检测细分对象类型 console.log(typeof [] ); // "object" console.log(typeof new Date()); // "object console.log...(typeof new RegExp()); // "object // 可以检测细分对象类型 console.log([] instanceof Array); // true console.log...而对于其他对象,则需要通过 call / apply 来调用才能返回正确的类型信息。 这里需要注意,其实内置对象比如 Number, Array 等对象上重写了 toString,用来转换为字符串。...等来判断 参考 判断JS数据类型的四种方法 JavaScript数据类型检测的四种方式 JS中数据类型的判断( typeof,instanceof,constructor,Object.prototype.toString.call

    1.6K10

    JS类型类型转换

    有不少人认为:JavaScript 没有类型! ? ? 正解是:JavaScript 中的变量没有类型,但值有类型。变量可以随时持有任何类型的值。 1. 值与类型 ?...JavaScript 有 7 种内置类型: 空值(null) 未定义(undefined) 布尔值(boolean) 数字(number) 字符串(string) 对象(object) 符号(symbol...类型转换基本规则 ? 在很多 JavaScript 书籍中强制类型转换被说成是危险、晦涩和糟糕的设计。但对于不懂的地方我们应该迎难而上,知其然并且知其所以然,不会因为种种传言就退避三舍。 ? ?...“显式”强制类型转换 “显式” 是指那些意图较明显的方式... a. 转换为 Boolean: Boolean(...)(不带 new); !...下面以一道 JS 面试题 结束本文 题目: 实现一个函数,运算结果可以满足如下预期结果: add(1)(2) // 3 add(1, 2, 3)(10) // 16 add(1)(2)(3)(4)(5)

    7.7K40

    JS对象

    概述 JavaScript中: js中的对象就是生活中对象的一个抽象, 没有特征和行为,取而代之的是有对应的属性和方法; var stu = { name : '张三',...,类型是Student 2.new 会让this指向这个新的对象 3.执行构造函数 目的:给这个新对象加属性和方法 4.new会返回这个新对象 自定义构造函数总结: 1.建议构造函数首字母要大写...// 结构 : Object.keys(对象) Object.keys(obj) 值类型与引用类型 JS数据类型 简单数据类型:number、string、boolean、undefined...变量在存储简单类型的时候,存的是值本身(值类型) 变量在存储复杂数据类型的时候,存的是引用,也叫地址(类型) 值类型的存储 变量存储数据的时候,存储的直接就是这个值本身。基本数据类型存放在栈内存中。...typeof typeof 只能判断基本数据类型类型 instanceof 判断对象的具体类型 constructor.name 也可以获取到对象的具体类型 typeof用于查看基本的数据类型

    11.5K72

    原生JS | 数据类型检测,并没你想象的那么简单

    码匠好友:无法检测对象型数据的具体分类” ………………后略……………… 数据类型检测方法 1 最为基础的typeof 2 不可不知的instanceof 3 比instanceof更好的constructor...对于数组、正则、对象{}、null等数据,虽然均属于对象类型,但却各不相同,使用typeof进行检测时,均返回object。...(/\d{8}/ instanceof RegExp); // 如上两个返回值均为true 基本解析 instanceof,能够用于数据类型检测,但是仅限于引用类型数据,无法检测基本数据类型的值...范例2中的body标签本身是一个对象,细化一些说是一个“节点对象”,再细化说,是一个“body元素”,所以三种检测均为true。...范例3中的数组同理(数组属于对象的一个分类) 比instanceof更好的constructor 语法与范例 // 语法: 要检测的内容.constructor === 类型

    98450

    对象类型转换

    4.如果父类对象与引用指向的实际是一个子类对象,那么这个父类对象的引用可以用强制类型转换转化成子类对象的引用。...采用该方法可以实现对象类型由超类向子类的转化,并且在程序的编译和运行均不会出现异常。...如果父类变量引用的是正确的子类型(这句话的意思即为描述1中的内容:即父类对象要想造型转换后赋给子类对象,其本身引用的是子类型的内存空间),赋值将执行。...如果父类变量引用的是不相关的子类型,将会生成class castException异常。 在java中,做强制类型转换时 父类与子类对象之间,同一父类的兄弟类对象之间如何强制转换?...即:子类对象名=(子类类名)父类对象名; 常用的一种形式:方法中形参用父类型,实参用子类的对象名. 总结: 对类进行造型转换的应参考以下原则: 1.总是可以“父=子”赋值。此时不需要类型转换。

    1.7K30
    领券