typeof和instanceof的区分和实现原理

typeof和instanceof的区分和实现原理1 typeoftypeof 是一个操作符而不是函数 用来检测给定变量的数据类型 常用于检测如下类型 string number boolean undefined symboltypeof 原理 不同的对象在底层都表示为二进制 在 Javasc

大家好,欢迎来到IT知识分享网。

1、typeof

typeof是一个操作符而不是函数,用来检测给定变量的数据类型 常用于检测如下类型:

string,number,boolean,undefined,symbol

typeof原理:

不同的对象在底层都表示为二进制,在Javascript中二进制前(低)三位存储其类型信息。

  1. 000: 对象
  2. 010: 浮点数
  3. 100:字符串
  4. 110: 布尔
  5. 1: 整数

typeof null 为什么为object?

答:不同的对象在底层都表示为二进制,在Javascript中二进制前(低)三位都为0的话会被判断为Object类型,null的二进制表示全为0,自然前三位也是0,所以执行typeof时会返回”object”。

2、instanceof

判断引用数据类型

一个对象是否为某一个构造函数的实例;或者说判断一个实例是否属于某种类型

console.log({} instanceof Object) // true // 也可以判断一个实例是否是其父类型或者祖先类型的实例 console.log([] instanceof Object) // true console.log([] instanceof Array) // true function Foo() {} let f = new Foo() console.log(f instanceof Foo) //true 

instanceof的实现原理

function instanceof2(L, R) { //L是表达式左边,R是表达式右边 const O = R.prototype; L = L.__proto__; while(true) { if (L === null) return false; if (L === O) // 这里重点:当 L 严格等于 0 时,返回 true return true; L = L.__proto__; } } instanceof2([],Object) //true 

3、Object.prototype.toString.call()

一般利用原型属性来判断数据类型

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/179881.html

(0)
上一篇 2025-06-03 12:15
下一篇 2025-01-18 12:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信