关于数组let arr = []原型链中原型对象数量的疑问及学习咨询
数组原型链原型对象数量问题解析
问题含义
这个问题本质是考察JavaScript原型链的结构,具体问的是:通过let arr = []创建的数组实例,其原型链上包含的原型对象(即实例继承的上层原型节点)数量。
答案为何是2?
我们可以通过原型链的逐层追溯来验证:
- 数组实例
arr的直接原型是Array.prototype——这是第一个原型对象。
验证代码:Object.getPrototypeOf(arr) === Array.prototype// 返回true Array.prototype的原型是Object.prototype——这是第二个原型对象。
验证代码:Object.getPrototypeOf(Array.prototype) === Object.prototype// 返回true- 再往上追溯,
Object.prototype的原型是null,而null不是对象,不属于原型对象的范畴,因此终止计数。
综上,原型链上的原型对象总数是2。
需先掌握的前置知识
- 原型与原型链核心机制:理解JavaScript中每个对象(除
null外)都内置[[Prototype]]属性,原型链是对象继承属性和方法的底层逻辑。 - 构造函数与原型对象的关联:比如
Array作为构造函数,其prototype属性指向数组实例的共同原型;所有数组实例都会继承Array.prototype的属性。 - 原型链查看工具:掌握
Object.getPrototypeOf()方法,它能直接获取一个对象的直接原型,是分析原型链的关键手段。 - 原型链的终点规则:明确
null是原型链的最终终点,它不是对象,不计入原型对象的统计。
内容的提问来源于stack exchange,提问作者Ava
相关产品推荐
相关产品推荐

