话不多说,先上原型链神图, 第一列是实例,第二列是构造函数,第三列是原型对象,非常清晰明了
个人对原型链总结如下:
- 所有 构造函数的 __proto__都默认指向 Function.prototype
- 除了 Object.prototype 指向 null 之外,其余 所有 原型对象的__proto__都指向 Object.prototype
- 原型链的好处是 节约内存,避免每创建一个实例就新开辟一个空间
一道好题
请说出输出结果
var F = function() {};
Object.prototype.a = function() {
console.log('a');
};
Function.prototype.b = function() {
console.log('b');
}
var f = new F();
f.a();
f.b();
F.a();
F.b();
答案
f.a() -> a
f.b() -> f.b is not a function
F.a() -> a
F.b() -> b