原型模式
用原型实例指向创建对象的类,适用于创建新的对象的类共享原型对象的属性以及方法。
JavaScript语言内部实现原型模式,在编程中使用函数的prototype共享方法就是原型模式。
function person (name){
this.name = name;
}
person.prototype.getName = function (){
return this.name;
}
function student(name){
person.call(this, name);
}
sutdent.prototype = new person();
let stu = new student('job');
stu.getName();
student函数并没有定义getName方法,但是却可以调用getName方法,就是因为student的原型是person实例,而person方法具有getName方法,其实例也具有getName方法,因此可以访问到getName方法。
原型模式的执行流程
- 先查找构造函数实例里的属性或方法,如果有,立刻返回
- 如果实例里没有就去原型中找