typeof & instanceof 原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了typeof & instanceof 原理相关的知识,希望对你有一定的参考价值。

参考技术A typeof 可判断类型比较有限,它的输出值只有八种,即用 typeof 判断一个变量,得到的结果只会是以下八种类型中的一种

第一版 JS 的 typeof 实现如下,在 JS 诞生之初就只有六种类型判断。

typeof 的输出值中没有 array 这一项,所以当需要判断数组类型时,可以使用 instanceof 。 instanceof 会判断右侧表达式是否在左侧表达式的原型链上,所以下面的两个 instanceof 都为 true 。

答案是 NO ,前面说了, typeof 只有八种类型,其中并没有 null 这一类型,如果用 typeof 判断,会得到 object 的结果。

因为在 javascript 底层存储变量的时候,会在变量的机器码低位 1-3 位表示类型信息。而 null 的低位 1-3 解析到的为 000 ,而 000 表示的是 obecjt 类型。

答案依然是 NO ,因为 null 根本没有 __proto__ 属性,所以用 instanceof 去检测永远都不会返回 true

拓展: Object.prototype.toString 可以判断所有类型

下面的表达式分别输出什么呢?如果全部回答正确,你对原型链和 instanceof 的理解应该非常到位了。

以上是关于typeof & instanceof 原理的主要内容,如果未能解决你的问题,请参考以下文章

typeof 和 instanceof 检测的异同

typeof & instanceof 原理

typeof & instanceof

instanceof, typeof, & Object.prototype.toString

typeof和instanceof检测的异同

javascript typeof 和 instanceof 的区别和联系