一切都是对象!
面向对象三大部分有封装,继承,多态!
请大家记住三个名词:
- 构造函数(对象)
- 实例(对象)
- 原型(对象)
1 js里的继承!
看以下代码:
function Animal(){
}
var smallAnimal = new Animal();
由代码显而易见:
- Animal 是一个构造函数!
- smallAnimal是实例对象!
1.1 原型
1.1.1 问题
根据上述代码和以下对话回答问题
smallAnimal来到了js世界好奇的说“我是怎么来的这个世界呢?”,js上帝看了一眼代码档案说:“是Animal构造函数创造了你”。
Animal构造函数告诉smallAnimal:“我是根据你父亲的样子创造了你!”。
那么问题来了,谁是smallAnimal的父亲?
1.1.2 寻找答案
我们很容易误以为Animal是smallAnimal的父类。这里的Animal只是一个构造函数
根据对话,很显然:Animal构造函数不是smallAnimal对象的父亲!
- smallAnimal和他父亲之间必然有着一种联系,父子联系,联系在哪?
- 构造函数Animal必然认识smallAnimal的父亲,他们的联系在哪?
1.1.3 答案
1 通过实例找父亲(原型)
var smallAnimalParent = smallAnimal._proto_
2 通过构造函数Animal找smallAnimal的父亲
var smallAnimalParent = Animal.prototype
三角关系:
2 总结
Animal 构造函数 以特定 原型 为模板构造出来的 实例 对象。
- 实例是原型的子类
- 构造函数是原型的一部分
参考: