坚果大叔 坚果大叔
  • 首页
  • 闲言碎语
  • 技术
  • 生活
  • 记录
  • 朋友
  • 热点新闻
  • 常用代码
  • 工具箱
  • 关于
首页 › 技术 › instanceof和typeof的区别

instanceof和typeof的区别

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

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来判断一个对象是否是某个类的实例,从而执行相应的方法或操作。

赞赏 赞(6)
嗖嗖嗖
上一篇
一键解决VsCode官网下载慢的问题
下一篇
在小程序中查看

评论已关闭

搜你想看的
聚合文章
QQ,你有多久没有打开啦!
纯CSS实现带有画布边框和刻度尺的样式
二维数组数据动态组合
前端CSS常用代码集合
闲言碎语
Memos
npm install 出现 Error:EISDIR:illegal operation on a directory 的错误提示!
2025-03-31 19:02:11
553 0 0
iphone 利用 Scriptable 添加网上国网电费小组件
2025-01-06 20:40:20
4,946 6 2
在博客中加上memos记录展示。
2024-12-25 23:41:27
2,297 5 2
网页点击平滑滚动效果~
2024-10-17 16:43:08
2,013 4
6
  • 6
博主

一位佛系的前端开发者,略通摄影,乐于尝试新事物,热衷于美食。

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

开往-友链接力

萌ICP备20230818号

苏ICP备18048410号-3
  • 首页
  • 闲言碎语
  • 技术
  • 生活
  • 记录
  • 朋友
  • 热点新闻
  • 常用代码
  • 工具箱
  • 关于
# CSS # # JavaScript # # vue # # 微信 # # 生活 #
坚果大叔
317
文章
125
评论
365
喜欢