本节书摘来自异步社区《JavaScript设计模式》一书中的第1章,第1.10节,作者:张容铭著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.10 可以链式添加吗
“呀,这种方式很奇特呀。不过我想链式添加方法,是不是在addMethod中将this返回就可以呀,这么做可以么?”
Function.prototype.addMethod = function(name, fn){
this[name] = fn;
return this;
}
“当然,所以你再想添加方法就可以这样了:”
var methods = function(){};
methods.addMethod('checkName', function(){
// 验证姓名
}).addMethod('checkEmail', function(){
// 验证邮箱
});
“那么,小白,我问你,我如果想链式使用你知道该如何做么?”
小白想了想说:“既然添加方法的时候可以将this返回实现,那么添加的每个方法将this返回是不是可以实现呢?”
于是小白这么写下:
var methods = function(){};
methods.addMethod('checkName', function(){
// 验证姓名
return this;
}).addMethod('checkEmail', function(){
// 验证邮箱
return this;
});
然后测试一下:
methods.checkName().checkEmail();
“真的可以呀!”小白兴奋地说。