卖坚果的怪叔叔 卖坚果的怪叔叔
  • 首页
  • 技术
  • 生活
  • 记录
  • 朋友
  • 常用代码
  • 工具箱
  • 关于
首页 › 技术 › instanceof和typeof的区别

instanceof和typeof的区别

坚果大叔
2023-09-26 17:20:33技术阅读 442

typeof

typeof和instanceof都是用来判断值或对象的类型的操作符或运算符。

typeof 123; // "number"
typeof "abc"; // "string"
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof {}; // "object"
typeof []; // "object"
typeof function(){}(); // "function"

可以看到,对于数字、字符串、布尔值、未定义和空对象,typeof 都返回了相应的类型字符串。但是对于数组和函数,它的返回值都是 "object",因为它们的数据类型都是对象。需要注意的是,如果是一个未声明的变量,typeof 会返回 "undefined"。另外值得注意的是typeof Null 返回的也是 『object』

typeof的原理是通过检查值的内部表示来确定其数据类型。它返回一个字符串,表示值的数据类型。对于基本数据类型(如number、string、boolean),typeof可以直接返回相应的字符串。对于对象类型(如object、function),typeof返回"object",无法区分具体的对象类型。

instanceof

instanceof的原理是通过检查对象的原型链来确定其是否是某个类或构造函数的实例。每个对象都有一个内部属性[[Prototype]],指向其原型对象。instanceof会沿着对象的原型链向上查找,直到找到指定的类或构造函数的原型对象,如果找到则返回true,否则返回false。

var arr = [1, 2, 3];
arr instanceof Array; // true
arr instanceof Object; // true
arr instanceof Number; // false
arr instanceof String; // false
arr instanceof Function; // false

需要注意的是,instanceof 运算符只能判断对象是否是某个构造函数的实例,而不能判断对象是否具有某个原型链上的属性或方法。

区别:

typeof用于确定一个值的数据类型,而instanceof用于检查一个对象是否是某个类或构造函数的实例。
typeof返回一个字符串,表示值的数据类型,而instanceof返回一个布尔值,表示对象是否是某个类或构造函数的实例。

应用场景:

typeof常用于判断一个值的数据类型,可以用于条件判断、类型转换等操作。例如,可以使用typeof来判断一个变量是否为数字类型,从而进行相应的处理。

instanceof常用于判断一个对象是否是某个类或构造函数的实例,可以用于实现继承、多态等面向对象的特性。例如,可以使用instanceof来判断一个对象是否是某个类的实例,从而执行相应的方法或操作。



微信扫描下方的二维码阅读本文

赞赏 赞(3)
嗖嗖嗖
上一篇
一键解决VsCode官网下载慢的问题
下一篇
再想想
所有评论(6)
  • 坚果大叔

    不错 不错

    2月前 未知地区 回复
    • 坚果大叔

      @坚果大叔: 镜头下的一点记录!

      2月前 未知地区 回复
  • GGBOY

    HHAI还不错

    2月前 未知地区 回复
  • 流量卡知识网

    你好,看完你的博客文章,感觉很不错!希望与你网站首页友情链接
    流量卡知识网
    http://53go.cn/
    专注于移动/联通/电信推出的大流量多语音活动长短期套餐手机卡的相关知识的介绍普及

    听说互换友情链接可以增加网站的收录量,特此来换,如果同意的话就给internetyewu@163.com[微信ganenboy]发信息或者就在此回复下吧!

    2月前 未知地区 回复
    • Mr.C

      @流量卡知识网: 好的

      2月前 回复
    • GGBOY

      @流量卡知识网: 可以

      2月前 未知地区 回复
近期文章
  • TrollStore 2 已发布,附超详细安装教程~
  • 纯CSS实现带有画布边框和刻度尺的样式
  • 远方
  • 使用 Clash 加速同一局域网下的其他设备
  • 一键解决VsCode官网下载慢的问题
TrollStore 2 已发布,附超详细安装教程~
2023-11-28 13:07:45
5,739 0 2
纯CSS实现带有画布边框和刻度尺的样式
2023-11-27 16:48:06
7,610 0 1
React实现打字机效果~
2023-08-22 17:31:49
662 0 1
Mac更换node版本切换工具n模块的镜像源
2023-07-13 13:21:45
596 2
6 3
  • 3
  • 6
博主

一位佛系的前端开发者,略通摄影,乐于尝试新事物,热衷于美食。愿意分享前端技巧、笔记,以及各类有趣的应用和资源教程 ♥♥

友链
故事胶片
公众号
坚果大叔 执行上下文 卖坚果的怪叔叔
Copyright © 2017-2023 卖坚果的怪叔叔

萌ICP备20230818号 苏ICP备18048410号-2
  • 首页
  • 技术
  • 生活
  • 记录
  • 朋友
  • 常用代码
  • 工具箱
  • 关于
# CSS # # JavaScript # # vue # # 微信 # # 生活 #
坚果大叔
260
文章
71
评论
231
喜欢