在JavaScript中,有多种方式可以进行类型检验:
1、typeof操作符:可以使用typeof操作符来检查一个值的类型。它返回一个表示值类型的字符串。
例如:
typeof 42 // "number"
typeof "hello" // "string"
typeof true // "boolean"
typeof undefined // "undefined"
typeof null // "object" (这是一个历史遗留问题,实际上null是一个原始值)
typeof {} // "object"
typeof [] // "object"
typeof function() {} // "function"
2、instanceof操作符:可以使用instanceof操作符来检查一个对象是否是某个类的实例。
例如:
var obj = new Array();
obj instanceof Array // true
obj instanceof Object // true(因为Array继承自Object)
3、constructor属性:所有对象都有一个constructor属性,它指向创建该对象的构造函数。可以使用constructor属性来检查一个对象的类型。
例如:
var obj = new Array();
obj.constructor === Array // true
obj.constructor === Object // false
4、Onject.prototype.toString方法:可以使用Object.prototype.toString方法来获取一个值的内部[[Class]]属性,从而检查其类型。
例如:
Object.prototype.toString.call(42) // "[object Number]"
Object.prototype.toString.call("hello") // "[object String]"
Object.prototype.toString.call(true) // "[object Boolean]"
Object.prototype.toString.call(undefined) // "[object Undefined]"
Object.prototype.toString.call(null) // "[object Null]"
Object.prototype.toString.call({}) // "[object Object]"
Object.prototype.toString.call([]) // "[object Array]"
Object.prototype.toString.call(function() {}) // "[object Function]"