js:判断对象或数组
一、判断值是否是对象:
- toString 方法【常用】
Object.prototype.toString.call(val)==='[object Object]' // true 表示为对象 // 这里使用 call 方法改变作用域
- constructor 方式
val?.constructor===Object // true 代表为对象
- typeof 与 instanceof 方式:typeof 和 instanceof 并不能完全判断一个值为对象
- typeof 的取值:
- undefined:值未定义
- boolean:值为布尔值
- string:值是字符串
- number:值是数值
- object:值是对象(包括数组)或null
- function:值是函数
- symbol:值是 Symbol
- instanceof 对于数组和对象都返回 true,如果是 null 返回 false
- [] instanceof Object:true
- new Object instanceof Object:true
- null instanceof Object:false
- typeof 的取值:
- __proto__方式 【不推荐】
val.__proto__===Object.prototype // true 代表为对象
- Object.getPrototypeOf 方式
Object.getPrototypeof(val)===Object.prototype // true 代表为对象
二、判断值是否为数组:
- toString 方式
Object.prototype.toString.call(val)==='[object Array]' // true 代表为数组
- Array.isArray方法【推荐】
Array.isArray(val) // true 代表为数组
- instanceof 方式
val instanceof Array // true 代表为数组
- constructor 方式
val?.constructor===Array // true 代表为数组
- __proto__方式 【不推荐】
val.__proto__===Array.prototype // true 代表为数组
- Object.getPrototypeOf 方式
Object.getPrototypeof(val)===Array.prototype // true 代表为数组
- isPrototypeOf 方式
Array.prototype.isPrototypeOf(val) // true 代表为数组
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现