JS判断是否为对象或数组的几种方法

更新时间:2023-05-29 16:36:23 阅读: 评论:0

JS判断是否为对象或数组的⼏种⽅法⼀.判断值是否是对象
String.call(val) === '[object Object]' // true 代表为对象
注意:这⾥要使⽤ call ⽅法改变作⽤域
赛龙舟val?.constructor === Object // true 代表为对象
这⾥使⽤了 null 传导符(?.) 以防⽌出错
typeof 与 instanceof 并不能完全判断⼀个值为对象
typeof 的取值有:
"undefined"——如果这个值未定义;
幼儿园万圣节活动"boolean"——如果这个值是布尔值;
"string"——如果这个值是字符串;
"number"——如果这个值是数值;
"object"——如果这个值是对象(包括数组)或null;
"function"——如果这个值是函数;
"symbol"——如果这个值是Symbol
与天气有关的谚语instanceof 操作符对于数组和对象都返回 true
[] instanceof Object // true
new Object instanceof Object // true
4.__proto__ ⽅式【不推荐】
__proto__属性,⽤来读取或设置当前对象的 prototype 对象,此属性未纳⼊标准,不建议使⽤。
val.__proto__ === Object.prototype // true 代表为对象
PrototypeOf ⽅式
孩子起名大全
⼆.判断值是否为数组
拉网捕鱼
String.call(val) === '[object Array]' // true 代表为数组
注意:这⾥要⽤ Object 的 toString ⽅法,Array 的 toString 返回的是拼接的字符串
var colors = ['red', 'blue', 'green'];
console.String());  // red,blue,green
2.Array.isArray ⽅法【推荐】
ES5中提供了 isArray ⽅法⽤来判断值是否为数组
Array.isArray(val) // true 代表为数组
3.instanceof ⽅式
val instanceof Array // true 代表为数组
为什么 instanceof 可以⽤来判断数组⽽不可以判断对象呢?因为数组本⾝就是⼀个类似于列表的⾼阶对象。
年化收益val?.constructor === Array // true 代表为数组
5. __proto__ ⽅式【不推荐】古诗《惊蛰》
val.__proto__ === Array.prototype // true 代表为数组
PrototypeOf ⽅式
7.isPrototypeOf ⽅式
isPrototypeOf() ⽅法⽤于测试⼀个对象是否存在于另⼀个对象的原型链上。山光水色
Array.prototype.isPrototypeOf(val) // true 代表为数组
该⽅式不能⽤来判断对象!

本文发布于:2023-05-29 16:36:23,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/807745.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:对象   数组   判断   是否   代表   谚语   出错
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图