前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >instanceof和typeof的区别

instanceof和typeof的区别

作者头像
执行上下文
发布2023-09-27 17:09:49
1910
发布2023-09-27 17:09:49
举报
文章被收录于专栏:执行上下文

typeof

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

代码语言:javascript
复制
typeof 123; // "number"
typeof "abc"; // "string"
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof {}; // "object"
typeof []; // "object"
typeof function(){}(); // "function"

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

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

instanceof

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-27 09:01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 执行上下文 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • instanceof
  • 区别
  • 应用场景
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档