1. 程式人生 > >設計模式學習筆記

設計模式學習筆記

開發 新的 check cal n) prot family 書寫 末尾

一、JS靈活性

1、在團隊開發中,為了減少方法覆蓋或者被覆蓋,我們可以用一個變量來保存這些方法和屬性;

示例:

var checkObject = {

checkName = function(){},

checkEmail = function(){}

}

2、類的形式創建對象

1)用類的形式創建對象時,對象名首字母要大寫,用來和其他對象區分;

var CheckObject = function(){

this.checkName = function(){},

this.checkEmail = function(){}

}

2)用類的形式來創建對象,那麽我們創建一個新對象,就要用

new 關鍵字來創建了

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();

設計模式學習筆記