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 类型以外,其他的也无法判断。


相关文章
|
7月前
|
JavaScript 前端开发 编译器
typeof和instanceof
typeof和instanceof
38 0
|
6月前
|
JavaScript 前端开发
为什么typeof null 是object
为什么typeof null 是object
|
3月前
|
JavaScript 前端开发
最简单的方式理解typeof、instanceof、hasOwnProperty
本文通过代码示例详细解释了JavaScript中`typeof`、`instanceof`和`hasOwnProperty`三个操作符的用法和区别:`typeof`用于获取数据类型的字符串表示,`instanceof`用于判断对象的类型,`hasOwnProperty`用于判断对象是否具有指定的属性。
41 3
|
7月前
Object.prototype.toString.call() 和 instanceOf 和 Array.isArray() 区别以及优缺点
Object.prototype.toString.call() 和 instanceOf 和 Array.isArray() 区别以及优缺点
56 0
|
7月前
|
JavaScript 前端开发
JavaScript中Object.prototype.toString.call()、instanceOf和Array.isArray()的区别
JavaScript中Object.prototype.toString.call()、instanceOf和Array.isArray()的区别
88 1
|
前端开发
前端学习案例2-instanceOf和typeof2
前端学习案例2-instanceOf和typeof2
69 0
前端学习案例2-instanceOf和typeof2
|
JavaScript 前端开发
JavaScript总结:typeof与instanceof的区别,及Object.prototype.toString()方法
JavaScript总结:typeof与instanceof的区别,及Object.prototype.toString()方法
186 0
JavaScript总结:typeof与instanceof的区别,及Object.prototype.toString()方法
|
存储 JavaScript 前端开发
typeof 与 instanceof ,如何模拟实现一个 instanceof,有没有通用检测数据类型?
typeof 与 instanceof ,如何模拟实现一个 instanceof,有没有通用检测数据类型?
|
JavaScript 前端开发
每日一题:typeof 与 instanceof 区别
每日一题:typeof 与 instanceof 区别
99 0