今天,我拿到了张容铭写的这本《JavaScript设计模式》这本书,开始了关于JavaScript更深一点的学习。

看到这本书开始的时候,虽然之前通过看书、一些比较好的视频的讲解,对JavaScript有了基础的认识,但是,在看到书的内容的时候,我内心还是有一种自己差的十万八千里的感觉,之前的代码写法不行,使用全局变量、全局函数,只是面向过程的编程的方法,扩展性、可重用性太低。以后我将每天更新博客,将自己所学每一种设计模式都po出来,我要自己看到自己的进步!!加油!

今天的内容是————面向对象的思想

主要感想:应该摈弃之前面向过程的思想和代码写法,尽量减少全局变量、全局函数的使用。结合我今天看的另外一本《高性能JavaScript》,针对js性能方面来说,全局变量以及DOM中的变量所在的作用域链的位置均在局部变量的所在位置的下方,也就是搜索顺序,先找的是局部变量,后来找的才是全局变量。因此,为了性能的需求、团队的合作和代码的重用性,都应该采用面向对象的思想。

案例:检查姓名、邮箱、密码是否符合规范,详细的检查函数省略。

方法一:

     //将所要添加的方法包装与object中
//方法1.使用json式的方法封装函数,缺点:没有使用new,扩展性不强
var CheckObject = {
checkName : function(){
//检查姓名
alert("checkName");
return this;//为链式调用
},
checkEmail : function(){
//检查Email是否合法
alert("checkEmail");
return this;//为链式调用
},
checkPassword : function(){
//检查密码
alert("checkPassword");
return this;//为链式调用
}
}; 方法一调用
CheckObject.checkName().checkEmail().checkPassword();

方法二:

我觉得较为好的一种方法,结合我自己类式调用的习惯,在Function的prototype中添加方法,避免对原生对象Function的污染,创建一个统一的方法为其添加方法,在其添加方法时,为使用类式调用,使其添加的方法在其原型中。

 Function.prototype.addMethods = function(name,fn){
this.prototype[name] = fn;
return this;
}
var Methods = function(){};
// var Methods = new Function();
Methods.addMethods('checkName',function(){
//检查姓名
alert("checkName"); }).addMethods('checkEmail',function(){
//检查Email是否合法
alert("checkEmail"); }).addMethods('checkPassword',function(){
//检查密码
alert("checkPassword"); }); //方法二调用时
var m = new Methods();
m.checkName();

希望大家有更好的见解随时reply,如果有误,请不吝赐教!

最新文章

  1. 使用linq的好处
  2. SQLServer将表数据导出为Insert语句
  3. Qt出现cannot find -IGL错误
  4. 剑指offer?
  5. poj2780Linearity(多点共线)
  6. hyper-v 中 安装 Centos 7.0 设置网络 教程
  7. BZOJ 4551 树
  8. 汽车XX网站秒杀抢购代码
  9. oracle数据库执行脚本常用命令总结
  10. oracle中的sql%rowcount
  11. 转:浏览器与WEB服务器工作过程举例
  12. iOS开发——打包静态库与Framework
  13. 第一次在gitHub上传项目到git.oschina的方法
  14. 基于FPGA的肤色识别算法实现
  15. jQuery UI练习
  16. [UE4]时间轴线TimeLine,Lerp插值
  17. htop工具使用
  18. vue - nodejs
  19. 7 MySQL--记录的增删改查
  20. VS2017在Release下编译错误C1001

热门文章

  1. sqli-labs(less-11-16)
  2. typedef和define一些问题
  3. #《JAVA程序设计》 20155214 实验五 网络编程与安全
  4. Potree学习总结
  5. slqite3练习
  6. LVS入门篇(三)之LVS的工作模式和调度算法
  7. Python:静态方法、类方法、实例方法
  8. QQ在线交谈一句代码搞定
  9. Spring Cloud(三):服务提供与调用 Eureka【Finchley 版】
  10. Deeplearning - Overview of Convolution Neural Network