调用Object.getPrototypeOf获取函数的返回值是什么?函数的[[Prototype]]指向何处?
关于函数原型的两个问题解答
1. 调用Object.getPrototypeOf方法获取函数的返回值是什么?
Object.getPrototypeOf() 方法返回的是传入函数的内部[[Prototype]]属性值,也就是该函数原型链上的直接原型对象。
- 对于普通函数(非class语法的构造函数),返回的是
Function.prototype; - 对于
class extends定义的子类构造函数,返回的是父类构造函数,如示例所示。
2. 函数的[[Prototype]]指向哪里?
函数作为特殊对象,默认情况下它的[[Prototype]]指向Function.prototype——所有函数都是Function的实例,因此会继承Function.prototype上的call、apply等方法。
唯一例外是class extends语法创建的子类构造函数,它的[[Prototype]]会指向父类构造函数,这是class继承机制的特殊设计,用于让子类继承父类的静态方法与属性。
代码示例验证
class a{} class b extends a{} Object.getPrototypeOf(b)===a //true
这段代码中,子类b的[[Prototype]]指向父类a,因此Object.getPrototypeOf(b)返回a,全等比较结果为true。
内容的提问来源于stack exchange,提问作者lei li
相关产品推荐
相关产品推荐

