判断数据类型
function DetermineTheDataType(target) { //typeof 不会报错 但是会将数组,对象,null当作object,函数,布尔,字符串,undefined可以正常区分,所以object依靠instanceof来实现 if (typeof target !== 'object') { return typeof target } //instanceof 返回结果是布尔值 会将数组判断成对象,但不会将对象判断成数组, // 所以如果是对象又是数组,再判断是否是数组,如果是则是数组反则反之,都返回false就是 null if (target instanceof Object) { if (target instanceof Array) { return 'array' } else { return 'object' } } else { return 'null' } }
顺便练习了下原型链继承
Object.prototype.DetermineTheDataType = DetermineTheDataType DetermineTheDataType(null); let a = {} a.__proto__ = Object console.log(a.DetermineTheDataType);
typeof 不会报错
但是会将数组,对象,null当作object
函数,布尔,字符串,undefined可以正常区分
所以处理object依靠instanceof来实现
instanceof 返回结果是布尔值 会将数组判断成对象,但不会将对象判断成数组
所以如果是对象又是数组,再判断是否是数组,如果是则是数组反则反之, instanceof 都返回false就是 null
请先
!