- 1、
typeof
对原始类型除null外都能正确判断,对于对象除了函数会显示function
外其他都会显示object
,因此不能准确判断复杂类型,使用typeof 111 === 'number'
- 2、instanceof 内部通过原型链来判断,判断对象可以,但原始类型不行,
instanceof
不认为原始类型值的变量是对象,原始类型都返回false
,使用{} instanceof Object
- instanceof 可以正确的判断对象的类型, 内部机制是通过判断对象的原型链中是不是能找到类型的prototype
function myInstanceof(left, right){ // 获取类型原型 let prototype = right.prototype // 获取对象原型 left = left._proto_ // 一直循环判断对象的原型是否等于类型原型,直到对象原型为null while (true){ if (left === null || left === undefined) return false if (prototype === left) return true left = lefy._proto_ } }
- 3、constructor 使用
f.constructor == F
,其中f是实例对象, F是类型或者说是钩爪函数,''.constructor === String
- 4、Object的toString 使用
Object.prototype.toString.call('') ; // 返回[object String]
原文链接:http://jiazq.xyz/view/111
JS判断类型的四种方法
最新推荐文章于 2024-06-01 23:14:18 发布