1.简单的构造函数模式
function A(a){
this.a=a;
this.fn = function(){
return this.a
}
}
var a =new A('a');
问题:每次新建一个实例都要重新定义fn方法
2.构造函数+原型模式
解决每次重新定义fn的问题,共享fn方法
function A(a){
this.a=a;
}
A.prototype.fn = function(){ return this.a; }
3.强制使用new创建对象
如果var a = A('a');
此时的this指向window
function A(a){
if( !(this instanceof car) ){
return new A(a);
}
this.a=a;
}
A.prototype.fn = function(){ return this.a; }