具体可参考红皮书第三版中的6.2.4章
书中的例题详细讲解了什么是原型模式
function fop(){}; fop.prototype.name="xiaohong"; fop.prototype.age="12"; fop.prototype.sayName=function(){ console.log(this.name); } var per1=new fop(); per1.sayName(); var per2=new fop(); per2.sayName();
简单来说就是声明一个空的方法,为其原型添加属性和方法,那么每一个其创建的对象实例都共享原型中的内容。
而在实际开发中更多的是构造函数与原型模式共用,构造函数中主要用来存储创建对象实例时的属性参数,而原型模式中则用来共享所有实例共享的方法,这样做之后就可以创建多个拥有自己特有属性同时又有相同方法的对象实例。如:
function foo(name,age,job){ this.name=name; this.age=age; this.job=job; } foo.prototype={ sayname:function(){ console.log(this.name) } }; var xiaoming=new foo("xiaoming","12","aa"); var zhanghong=new foo("zhanghong","12","bb"); xiaoming.sayname(); zhanghong.sayname();
在这个例子中,xiaoming和zhanghong拥有自己的姓名,年龄和工作,但是他们又同时拥有sayname这个相同的方法来输出自己的name。