为什么[1,2,3] .prototype === Array.prototype返回false?

时间:2020-10-13 03:13:16

标签: javascript

我正在Chrome控制台中使用Prototype。因为[1,2,3].prototype === Array.prototype包含相同的方法,所以它们不等于同一原型吗?

3 个答案:

答案 0 :(得分:4)

非类对象没有prototype属性。相反,他们有__proto__。如此有效:

[1,2,3].__proto__ == Array.prototype
//=> true

但已弃用。如果确实需要显式检查原型,则可以在现代JS引擎中使用它:

Object.getPrototypeOf([1,2,3]) == Array.prototype

但是,通常,检查对象是否为类实例的方法是使用instanceof

[1,2,3] instanceof Array
//=> true

答案 1 :(得分:3)

较旧的javascript引擎(目前是最新的,但已被淘汰)

[1,2,3].__proto__ === Array.prototype

现代javascript引擎(即非IE)

Object.getPrototypeOf([1,2,3]) === Array.prototype

答案 2 :(得分:1)

添加一些值得关注的要点,__proto__是一个内部属性,不鼓励使用,并且仅需要根据语言规范在浏览器环境中实现,Object.getPrototypeOf()更好。 / p>

您也可以通过isPrototypeOf来做到这一点:

Array.prototype.isPrototypeOf([1,2,3])
相关问题