typeof、instanceof和Object.prototype.toString.call()的区别

mark下

typeof
返回一个字符串,指示未经计算的操作数的类型。

const str = 'abcdefg'
typeof str // string

值得注意的是typeof 无法判断数组

const arr = []
typeof arr // object

typeof 只能判断基本类型,除此之外Date null regExp等都只是object的拓展
因此数组建议使用instanceof来判断

instanceof
instanceof运算符用于测试一个对象是否在其原型链上存在一个构造函数的prototype属性

function fn () {}
function oth () {}
const fun = new fn()
fun instanceof fn // true
fun instanceof oth // false

const arr = []
arr instanceof Array // true

Object.prototype.toString.call()

Object.prototype.toString.call(obj) 返回obj的类型字符串

const str = 'hello world'
const arr = []
const obj = {}
Object.prototype.toString.call(str) // '[object String]'
Object.prototype.toString.call(arr) // '[object Array]'
Object.prototype.toString.call(obj) // '[object Object]'
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值