1.什么是原型链?
每个对象拥有一个原型对象,对象以其原型为模板、从原型继承方法和属性。原型对象也可能拥有原型,并从中继承方法和属性,一层一层、以此类推。这种关系常被称为原型链 (prototype chain),它解释了为何一个对象会拥有定义在其他对象中的属性和方法。
2.原型的作用是什么?
- 让实例对象知道谁创建了它
- 如果想要给某些类库添加一些方法,可以使用
xxx.prototype.method
来进行扩展function Foo() {}
// function 就是个语法糖
// 内部等同于 new Function()
let a = { b: 1 }
// 这个字面量内部也是使用了 new Object()
总结
- Object 是所有对象的爸爸,所有对象都可以通过 proto 找到它
Function
是所有函数的爸爸,所有函数都可以通过__proto__
找到它Function.prototype
和Object.prototype
是两个特殊的对象,他们由引擎来创建- 这也解释了
Function.prototype = Function.__proto__
- 这也解释了
- 除了以上两个特殊对象,其他对象都是通过构造器 new 出来的
- 函数的
prototype
是一个对象,也就是原型 - 对象的
__proto__
指向原型,__proto__
将对象和原型连接起来组成了原型链