設計模式學習筆記
一、JS靈活性
1、在團隊開發中,為了減少方法覆蓋或者被覆蓋,我們可以用一個變量來保存這些方法和屬性;
示例:
var checkObject = {
checkName = function(){},
checkEmail = function(){}
}
2、類的形式創建對象
1)用類的形式創建對象時,對象名首字母要大寫,用來和其他對象區分;
var CheckObject = function(){
this.checkName = function(){},
this.checkEmail = function(){}
}
2)用類的形式來創建對象,那麽我們創建一個新對象,就要用
var a = new CheckObject();
a.checkName();
3、檢測類
上面的例子中,我們把所有的方法都通過 this 定義,這樣通過new 創建對象時,都會對類的this上的屬性進行復制, 這樣每一個新的方法都會有自己的一套方法, 這樣會造成 很多消耗;
因此我們用原型的方法來構造一個類,這樣新對象都是用同一個方法了;
var CheckObject = function(){};
CheckObject.prototype = {
checkName :function(){},
checkEmail : function(){}
}
調用:
var a = new CheckObject();
a.checkNmae();
a.checkEmail();
4、方法的妙用 --- 鏈式調用
上面的例子中,調用了2個方法,a就書寫了2次;這個可以避免的;
只要在聲明的每一個方法末尾將當前對象返回即可,this 就是指向當前對象;
示例:
var CheckObject = function(){};
CheckObject.prototype = {
checkName :function(){
//驗證姓名
return this;
},
checkEmail : function(){
//驗證郵箱
return this;
}
}
var a = new CheckObject();
a.checkNmae().checkEmail();
5、函數祖先
函數功能拓展:可以給原生函數添加一個拓展方法的功能;
Function.prototype.addMethod = function(name,fn){
this[name] = fn;
}
鏈式調用:
Function.prototype.addMethod = function(name,fn){
this.prototype[name] = fn;
return this;
}
新對象
Var Methods = function(){};
Methods.addMethod(‘checkName’,function(){
//驗證姓名
}).addMethod(‘checkEmail’,function(){
//驗證郵箱
});
使用新對象:
Var m = new Methods();
m.checkName().checkEmail();
設計模式學習筆記