instanceof用法&&重写instanceof

1. 作用

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

2. 语法

object instanceof constructor

参数

object:某个实例对象
constructor:某个构造函数

描述

instanceof运算符用来检测constructor.prototype是否存在于参数object的原型链上

3. 判断引用数据类型

function Person(name){
    
    
    this.name = name
}
let p = new Person('张三')
console.log([] instanceof Array)
console.log({
    
    } instanceof Object)
console.log(new Function() instanceof Function)
console.log(new Date() instanceof Date)
console.log(p instanceof Person)

4. 判断基本数据类型

console.log(123, 123 instanceof Number)
console.log('abc', 'abc' instanceof String)
console.log(false, false instanceof Boolean)
console.log(null instanceof Object)
console.log(undefined instanceof Object)
console.log(Symbol('123'), Symbol('123') instanceof Symbol)

instanceof判断基本数据类型返回值全是false

5. 重写instanceof()

递归写法:

var _instanceof = function(left, right){
    
    
    if(left.__proto__ === null)  return false;
    if(left.__proto__ === right.prototype) return true;
    return _instanceof(left.__proto__, right)
}

循环写法:

function _instanceof(left,right) {
    
    
    // 补全代码
    while(true){
    
    
        if(left.__proto__ === null){
    
    
            return false
        }else if(left.__proto__ === right.prototype){
    
    
            return true
        }else{
    
    
            left = left.__proto__
        }
    }
}

参考链接:

  1. instanceof

猜你喜欢

转载自blog.csdn.net/qq_45465526/article/details/121715624
今日推荐