JS 8种数据类型判断方式

1.typeof 

  • null(object)
  • NaN(number)
  • ducument.all(undefined)

  注意:暂时性死区(ES6)

function log(){
    typeof a
    let a = 10
}
log();// ReferenceError ReferenceError: Cannot access 'a' before initialization
 

2.constructor,指向创建实例对象的构造函数

  •  null
  • undefined
  • 可以被改写

3.instanceof,原型链查找

  • 右操作数必须是函数或者class
  • 跨窗口注意

4.isPrototypeOf

  • 是否出现在实例对象原型链上
  • 比instanceof更安全 

 

5.Object.prototype.toString

通过函数动态的this特性,返回去数据类型'[object Date]'

 

6.鸭子类型检测(候选方案)

检查自身,属性的类型或者执行结果的类型

 

7.Symbol.toSringTag

Object.prototype.toString会读取该值

  • 需要自定义类型
  • 兼容性(ES6)
class MyArray{
    get [Symbol.toStringTag](){
        return "MyArray"
    }
}
var pf = console.log
var a = new MyArray();
pf(Object.prototype.toString.call(a)) //[object MyArray]

 

8.等比较

与某个固定值进行比较

  • undefined,window,document,null等
isUndefined = function(obj){
    return obj === void 0
}  
//void 返回的是undefined

 

 

 

 

posted @ 2023-03-10 14:37  flybaby诺诺  阅读(17)  评论(0)    收藏  举报