typeof的用法、instanceof详解

本文详细解析JavaScript中typeof运算符的作用,区分基本数据类型和复杂数据类型,以及instanceof用于检测原型链的方法。通过实例演示如何使用myInstanceof函数模拟原型链查找。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. typeof

基本数据类型

除了null,返回的是object,其他都是原值

typeof Symbol('123')
'symbol'
typeof BigInt(123)
'bigint'
typeof 3
'number'
typeof  'string'
'string'
typeof true
'boolean'
typeof null
'object'

复杂数据类型

除了function返回function,其他都是object

typeof function(){}
'function'
typeof []
'object'
typeof new Date()
'object'
typeof window
'object'

NaN

NaN是唯一一个和自身不相等的值,typeof为number:

NaN === NaN  // false
typeof NaN
'number'

2. instanceof

用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。

语法:object instanceof constructor
object:某个实例对象
constructor:某个构造函数
用来检测 constructor.prototype 是否存在于参数 object 的原型链上。

手写instanceof

// 原型链的向上查找
function myInstanceof(left, right) {
    
    if (typeof left !== 'object' || typeof left == 'function' || left === null) {
        return false
    }
    let proto = left.__proto__
    console.log(proto);
    
    while (true) {
        if (proto == null) return false
        if (proto == right.prototype) return true
        proto = proto.__proto__
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值