構造函數模式
在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)如果多個函數,要在外部創建多個全局函數。這樣的話就毫無封裝性了。
解決以上問題,從而誕生了原型模式。