0%

instanceof

instanceof 用于判断在某个对象的原型链上查找是否存在一个构造函数的 prototype 属性

1
2
3
4
5
6
7
8
const obj = {
name: 'tan'
}

const arr = [1, 2, 3]

console.log(obj instanceof Object) // true
console.log(arr instanceof Array) // true

判断内容必须为对象

1
2
3
4
5
6
7
8
9
let a = 10
let b = new Number(10)
console.log(a instanceof Number) // false 检测的一定要是对象才行
console.log(b instanceof Number) // true

console.log(a.__proto__ === Number.prototype) // true

const arr = [1, 2, 3]
console.log(arr instanceof Object) // true

手写 instanceof

instanceof 在查找的过程中会遍历左边变量的原型链,直到找到右边变量的 prototype 查找失败,返回 false

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const _instanceof = function (obj, _constructor) {
while (obj) {
if (obj.__proto__ === _constructor.prototype) {
return true
}
obj = obj.prototype
}
return false
}

const arr = [1, 2, 3]

console.log(_instanceof(arr, Object)) // false
console.log(_instanceof(arr, Array)) // true
-------------本文结束感谢您的阅读-------------