typeof 与 instanceof 区别?

简介: typeof 与 instanceof 区别?

typeof

typeof 操作符返回一个字符串,表示未经计算的操作数的类型.

instanceof

instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链

使用如下:

object instanceof constructor

object为实例对象,constructor为构造函数

构造函数通过new可以实例对象,instanceof能判断这个对象是否是之前那个构造函数生成的对象。

引用类型数据,用typeof来判断的话,除了function会被识别出来之外,其余的都输出object

instanceof实现原理

顺着原型链去找,直到找到相同的原型对象,返回true,否则为false

区别

typeof与instanceof都是判断数据类型的方法,区别如下:

typeof会返回一个变量的基本类型,instanceof返回的是一个布尔值

instanceof 可以准确地判断复杂引用数据类型,但是不能正确判断基础数据类型

而typeof 也存在弊端,它虽然可以判断基础数据类型(null 除外),但是引用数据类型中,除了function 类型以外,其他的也无法判断。


相关文章
|
1月前
|
JavaScript 前端开发
typeof的作用
typeof的作用
|
2月前
|
JavaScript 前端开发 编译器
typeof和instanceof
typeof和instanceof
16 0
|
9天前
|
Java
instanceof是什么~
instanceof是什么~
|
1月前
|
JavaScript 前端开发
JavaScript中Object.prototype.toString.call()、instanceOf和Array.isArray()的区别
JavaScript中Object.prototype.toString.call()、instanceOf和Array.isArray()的区别
26 1
|
3月前
Object.prototype.toString.call() 和 instanceOf 和 Array.isArray() 区别以及优缺点
Object.prototype.toString.call() 和 instanceOf 和 Array.isArray() 区别以及优缺点
|
9月前
|
存储 JavaScript
typeof null 的结果是什么?为什么?
首先要知道,这并不是设计者希望出现的结果,这是一个bug。后来也提出过修复这个bug的提案,但是由于这个bug影响的范围太大,也就没有及时更正,越到后面影响范围也越广,所以就不修复了。
|
9月前
|
JavaScript 前端开发 Java
为什么使用typeof判断数据类型的时候null出来是object?
为什么使用typeof判断数据类型的时候null出来是object?
|
JavaScript 前端开发
JavaScript总结:typeof与instanceof的区别,及Object.prototype.toString()方法
JavaScript总结:typeof与instanceof的区别,及Object.prototype.toString()方法
155 0
JavaScript总结:typeof与instanceof的区别,及Object.prototype.toString()方法
|
JavaScript 前端开发
每日一题:typeof 与 instanceof 区别
每日一题:typeof 与 instanceof 区别
77 0