1.typeof 操作符
这是最常见的用于确定变量类型的方法。但是,需要注意的是,typeof
对于一些复杂类型(如数组、null和对象)的返回值可能并不直观。例如,typeof null
返回 'object'
,而 typeof []
返回 'object'
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| let num = 123; console.log(typeof num); let str = "hello"; console.log(typeof str); let obj = {}; console.log(typeof obj); let arr = []; console.log(typeof arr); let nullVar = null; console.log(typeof nullVar);
|
2.instanceof 操作符
instanceof
用于测试构造函数的 prototype
属性是否出现在对象的原型链中的任何位置。这通常用于判断一个对象是否是一个类的实例。
1 2 3 4 5
| let arr = []; console.log(arr instanceof Array); let date = new Date(); console.log(date instanceof Date);
|
3.constructor 属性
每个JavaScript对象都有一个 constructor
属性,它指向创建该对象的构造函数。通过比较 constructor
属性,我们可以确定对象的类型。
1 2 3 4 5
| let arr = []; console.log(arr.constructor === Array); let date = new Date(); console.log(date.constructor === Date);
|
注意:constructor
属性可以被修改,因此它可能不是最可靠的方法。
4.Object.prototype.toString.call() 方法
这个方法返回一个表示该对象的字符串。对于不同类型的对象,返回的字符串的格式是固定的,因此可以通过分析返回的字符串来精确出判断对象的类型。
1 2 3 4 5 6 7 8 9 10 11
| let num = 123; console.log(Object.prototype.toString.call(num)); let str = "hello"; console.log(Object.prototype.toString.call(str)); let arr = []; console.log(Object.prototype.toString.call(arr)); let obj = {}; console.log(Object.prototype.toString.call(obj));
|