一、typeof
1、定义&作用
2、语法
const { num, str, bol, nul, udf, sbl, big } = {
num: 1,
str: 'str',
bol: true,
udf: undefined,
sbl: Symbol(),
big: 999n,
nul: null
}v
console.log(typeof num)
console.log(typeof str)
console.log(typeof bol)
console.log(typeof udf)
console.log(typeof sbl)
console.log(typeof big)
console.log(typeof nul)
二、instanceof
1、定义&作用
- 返回布尔值,判断引用类型数据,但不能正确判断基础类型数据
2、语法
const { obj, obj2, arr, reg, date, doc, win, fn } = {
obj: {},
obj2: new Object(),
arr: [],
reg: /123/,
date: new Date(),
doc: document,
win: window,
fn: function () {}
}
console.log(obj instanceof Object)
console.log(obj2 instanceof Object)
console.log(arr instanceof Array)
console.log(reg instanceof RegExp)
console.log(date instanceof Date)
console.log(doc instanceof HTMLDocument)
console.log(win instanceof Window)
console.log(fn instanceof Function)
三、Object.prototype.toString.call()
1、定义&作用
- 返回字符串:[object xxx], 判断数据类型
2、语法
const { num, str, bol, nul, udf, sbl, big } = {
num: 1,
str: 'str',
bol: true,
udf: undefined,
sbl: Symbol(),
big: 999n,
nul: null
}
console.log(Object.prototype.toString.call(num))
console.log(Object.prototype.toString.call(str))
console.log(Object.prototype.toString.call(bol))
console.log(Object.prototype.toString.call(udf))
console.log(Object.prototype.toString.call(sbl))
console.log(Object.prototype.toString.call(big))
console.log(Object.prototype.toString.call(nul))
const { obj, obj2, arr, reg, date, doc, win, fn } = {
obj: {},
obj2: new Object(),
arr: [],
reg: /123/,
date: new Date(),
doc: document,
win: window,
fn: function () {}
}
console.log(Object.prototype.toString.call(obj))
console.log(Object.prototype.toString.call(obj2))
console.log(Object.prototype.toString.call(arr))
console.log(Object.prototype.toString.call(reg))
console.log(Object.prototype.toString.call(date))
console.log(Object.prototype.toString.call(doc))
console.log(Object.prototype.toString.call(win))
console.log(Object.prototype.toString.call(fn))
}
3、简写
{}.toString.call
3.1、语法
console.log({}.toString.call(num))
console.log({}.toString.call(obj))
console.log({}.toString.call(fn))
四、拓展
1、封装一个通用类型判断函数
function getType(xxx) {
const type = typeof xxx
if (type !== 'object') {
return type
}
return {}.toString.call(xxx).replace(/^\[object (\S+)\]$/, '$1')
}