1、明白自己

明白了自己写的代码为什么难懂且臃肿,不方便阅读且效率低。最主要的是为什么整套流程下来只能我一个人写,因为这样的代码根本没有团队力,协同能力差。对js理解的不过透彻。

2、真正的学会对象与类的区别

类 :对一群具有相同特征的对象的集合的描述;
对象:真实存在的对象个体;

比如人类,指的是一个范围; 对象:比如某个人,指的是这个范围中具体的对象。

Javascript中的function作为构造函数时,就是一个类,搭配上new操作符,可以返回一个对象。
当然,要生成一个对象,也可以用字面量的形式,例如var obj = {x: 1, y: function(){} };
类可以理解为一个模板,而对象就是根据这个模板造出来的具体实例。

3、在函数的原型中添加统一添加方法的功能方法

一般不把功能函数封装在原型里面,因为这样会污染全局,造成不必要的开销。所以我会抽象出一个统一的添加方法的功能方法。

例如:

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

4、函数链式添加方法

在原型中添加功能的方法中添加返回this语句,这样每次添加完一个方法后都会返回methods函数。

Function.prototype.addMethod= function(name,fn){

  this[name]=fn;

  return this;

}

也可以为每个添加的方法返回this。

var methods = function(){};

methods.addMethod('checkName',function(){

  //验证姓名

  return this;

}).addMethod('checkEmail',function(){

  //验证邮箱

  return this;

});

methods.checkName().checkEmail();

这是用函数式的调用方式

5、类式的调用方式(链式添加)

Function.prototype.addMethod = function(name,fn){

  this.prototype[name]=fn;

  return this;

}

var Methods = function(){};

Methods.addMethod('checkName',function(){

  //验证姓名

  return this

}).addMethod('checkEmail',function(){

  //验证邮箱

  return this

});

但是这时候我们就不能直接使用了,要通过new关键字来创建新的对象了。

var m = new Methods();

m.checkEmail().checkEmail()

两个疑惑:1、函数添加方法的功能方法语句为什么是this[name],为什么是这样写的?

     2、类式添加方法的功能方法语句为什么是this.prototype[name]?这样的话方法不都添加到了原型中去了吗?这样不会污染全局吗?

最新文章

  1. iOS从零开始学习直播之2.采集
  2. python-socket模块
  3. 使用wex5得到的一些教训
  4. python(30) 获取网页返回的状态码,状态码对应问题查询
  5. 【mysql】关于IO/内存方面的一些优化
  6. 18 多线程编程 - 《Python 核心编程》
  7. linux内核神级list
  8. quartz 数据表字典
  9. asp数据链接
  10. 一个简单的Makefile的编写【用自己的话,解释清楚这些】
  11. php精粹-编写高效的php代码 --- php设计模式
  12. 编写一个void sort(int*x,int n)实现将x数组中的n个数据从大到小排序。n及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件
  13. Android4.0设置接口变更摘要(四)
  14. [Usaco2007 Dec]Building Roads 修建道路[最小生成树]
  15. Windows下快速安装Xgboost(无需Git或者VS)
  16. udp服务端收发数据流程
  17. crontab学习
  18. 【Android】ImageMap,图片地图
  19. SD341X-SD343H蜗轮传动伸缩蝶阀厂家,SD341X-SD343H蜗轮传动伸缩蝶阀价格 - 专题栏目 - 无极资讯网
  20. 【转】 The user specified as a definer ('root'@'') does not exist when using LOCK TALBE

热门文章

  1. JavaScript Patterns 2.3 For loops
  2. YTU 2750: 猜算式
  3. TensorFlow alexnet在华为Mate10上运行方法
  4. KVO中你所不知道的"坑"
  5. 44. Ext信息提示对话框
  6. Vue导航守卫beforeRouteEnter,beforeRouteUpdate,beforeRouteLeave详解
  7. JavaScript--改变 HTML 样式
  8. Horspool和BM算法解析
  9. android 虚拟机,文件导入sdcard下报错,Read-only file system
  10. html基础代码演示2