《JavaScript设计模式》——1.9 函数的祖先

本节书摘来自异步社区《JavaScript设计模式》一书中的第1章,第1.9节,作者:张容铭著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.9 函数的祖先

小白回顾着这些从未见过的代码方式内心很激动,小铭见小白对JavaScript如此着迷,于是补充了两句。

“如果你看过prototype.js的代码,我想你会想到下面的书写方式。”

“prototype.js是什么?”小白问道。

“一款JavaScript框架,里面为我们方便地封装了很多方法,它最大的特点就是对源生对象(JavaScript语言为我们提供的对象类,如Function、Array、Object等等)的拓展,比如你想给每一个函数都添加一个检测邮箱的方法就可以这么做。”

Function.prototype.checkEmail = function(){
  // 验证邮箱
}

“这样你在使用这个方法的时候就比较方便了,如果你习惯函数形式,那么你可以这么做。”

var f = function(){};
f.checkEmail();

“如果你习惯类的形式你也可以这么做。”

var f = new Function();
f.checkEmail();

“但是你这么做在我们这里是不允许的,因为你污染了原生对象Function,所以别人创建的函数也会被你创建的函数所污染,造成不必要的开销,但你可以抽象出一个统一添加方法的功能方法。”

Function.prototype.addMethod = function(name, fn){
  this[name] = fn;
}

“这样如果你想添加邮箱验证和姓名验证方法你可以这样做。”

var methods = function(){};
或者

var methods = new Function();
methods.addMethod('checkName', function(){
  // 验证姓名
});
methods.addMethod('checkEmail', function(){
  // 验证邮箱
});
methods.checkName();
methods.checkEmail();
    原文作者:javascript设计模式
    原文地址: https://yq.aliyun.com/articles/94728
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞