问题
上午看面经看到的一个同学的面试题目
Function.prototype.a = 1;
Object.prototype.b = 2;
var Func = function(){};
var f = new Func();
console.log(f.a, f.b)
测试了一下实际的输出结果是undefined 2
我的理解
我的理解是首先Object.prototype
是原型链的顶端,Function.prototype
应该是指向了Function
的构造函数本身。
然后这个实例f
是对象,而不是函数,所以Object.prototype
里的值他能读到,而Function.prototype
是他的构造函数的原型链,所以他不能读到。
(这两天在补继承和原型链方面的知识,理解不到位请多指出。想知道这个问题大家是如何解释的
f 是构造函数 Func 的实例,他的原型链找到所属类的原型。
f.a 和 f.b 两个属性值,在自己身上找不到。会顺着原型链一直向上查找,直到找到头为止。
原型和原型链