js讀書亂燉之初級設計模式

初入公司,讓寫三個驗證方法,驗證郵箱,驗證姓名,驗證密碼:
function checkName() {}

function checkEmail() {}

function checkPassword() {}

 


等價於:
var checkName = function() {};
var checkEmail = function() {};
var checkPassword = function() {};

 


這兩種都是建立了全局變量,容易跟別人命名衝突,形成函數變量覆蓋,更好的作法能夠將它們放在一個變量中保存,避免覆蓋。 即用對象收編變量。這樣不容易衝突
var checkObject = {
checkName: function() {},
checkEmail: function() {},
checkPassword: function() {}
};

 


var CheckObject = function() {};
CheckObject.checkName = function() {};
CheckObject.checkEmail = function() {};
CheckObject.checkPassword = function() {};

 



類的聲明方式:也不久相互影響,至關於複製了一份同樣,建立了一個新的實例。用類建立對象
 
將方法掛載到原型上: 經嘗試,不會相互影響。實例裏有checkName的方法,__proto__也有這個方法,則優先訪問實例中的方法。
 
加入我想調用這個類下的三個方法:則: a須要寫三遍:
var CheckObject = function() {
this.checkName = function() {
console.log(111);
};
this.checkEmail = function() {
console.log(222);
};
this.checkPassword = function() {
console.log(333);
};
};

var a = new CheckObject();

a.checkName();
a.checkEmail();
a.checkPassword();

 


將this返回則能夠鏈式調用:
var CheckObject = function() {
this.checkName = function() {
console.log(111);
return this;
};
this.checkEmail = function() {
console.log(222);
return this;
};
this.checkPassword = function() {
console.log(333);
return this;
};
};

var a = new CheckObject();

a.checkName()
.checkEmail()
.checkPassword();

 


咱們能夠給JS的內置對象類提供方法:可是這種作法並很差。別人建立的函數會被你建立的函數污染。

下面這個寫法能夠給具體實例添加方法:

在公共方法addMethod中return this能夠鏈式調用

換一種方式:
相關文章
相關標籤/搜索