构造函数模式
在ECMAScript中构造函数可以用来创建特定类型的对象。例如:Array Object String等的原生构造函数。
根据这一特性我们可以重写构造函数来满足我们的需求,代码如下:
function Demo(name,address,time){
this.name=name;
this.address=address;
this.time=time;
//最好将函数分离出来
this.displayInfo=funtion (){
alert(this.name+","+this.address+","+this.time);
}
}
var demo1=new Demo("demo","china","2017-04-25")
1)创建一个新对象
2)构造函数的作用域赋值给新对象
3)执行构造函数中的代码(将构造函数中的属性赋值给新对象)
4)返回新对象
优点:将构造函数的实例标识为一种特定的类型。
缺点:创建实例会重复的创建函数,这种创建函数的方式会导致不同的作用域链和标识符解析.
解决方法:
将构造函数中的内部函数提取出来成为全局函数。
新问题:1)全局函数只是被构造函数调用,有点资源浪费。2)如果多个函数,要在外部创建多个全局函数。这样的话就毫无封装性了。
解决以上问题,从而诞生了原型模式。