[英]Why does [1,2,3].prototype === Array.prototype return false?
我正在 Chrome 控制台中玩 Prototype。 [1,2,3].prototype === Array.prototype
等同于相同的原型,因为它们都包含相同的方法?
非类对象没有prototype
属性。 相反,他们有__proto__
。 所以这有效:
[1,2,3].__proto__ == Array.prototype
//=> true
但它已被弃用。 如果你真的需要明确检查原型,你可以在现代 JS 引擎中使用它:
Object.getPrototypeOf([1,2,3]) == Array.prototype
但是,一般来说,检查对象是否是类的实例的方法是使用instanceof
:
[1,2,3] instanceof Array
//=> true
较旧的 javascript 引擎(和当前的,但被认为已弃用)
[1,2,3].__proto__ === Array.prototype
现代 javascript 引擎(即不是 IE)
Object.getPrototypeOf([1,2,3]) === Array.prototype
补充一些值得注意的地方, __proto__
是内部属性,不鼓励使用,只需要按照语言规范在浏览器环境中实现, Object.getPrototypeOf()
更好。
你也可以通过isPrototypeOf
来做到:
Array.prototype.isPrototypeOf([1,2,3])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.