js里"12345" instanceof Object为什么是false?

pc120
  • 568

console.log("12345" instanceof Object);
Object是所有对象的祖先,那么为什么字符串12345不是Object的实例,返回false呢?
而且我还发现,都是字面量的,下面2个都是返回true

console.log({} instanceof Object);
console.log([] instanceof Object);
回复
阅读 859
2 个回答
✓ 已被采纳

image.png

js中基本类型的数据都不是实例对象,他的实现类似于

function myInstanceof (left, right) {
    // 基本数据类型直接返回false
    if (typeof left !== 'object' || left === null) return false
    // getProtypeOf是Object对象自带的一个方法,能够拿到参数的原型对象
    let proto = Object.getPrototypeOf(left)
    while (true) {
        // 查找到尽头,还没找到
        if (proto == null) return false
        // 找到相同的原型对象
        if (proto == right.prototype) return true
        proto = Object.getPrototypeOf(proto)
    }
}

字符串不是对象,所以为false

你知道吗?

宣传栏