JavaScript设计模式学习之路——面向对象的思想
今天,我拿到了张容铭写的这本《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,如果有误,请不吝赐教!
JavaScript设计模式学习之路——面向对象的思想的更多相关文章
- JavaScript设计模式学习之路——继承
早在学习java的时候,就已经接触了继承,在java中因为有extends关键字,因此继承就比较简单.但是在JavaScript中,只能通过灵活的办法实现类的继承. 下面是我昨天在学习过程中,了解到的 ...
- Javascript设计模式学习一
学习Javascript设计模式之前,需要先了解一些相关知识,面向对象的基础知识.this等重要概念,以及掌握一些函数式编程的技巧. Js多态 多态的思想:实际上是把“做什么”和“谁去做”分离开来.例 ...
- JavaScript设计模式学习笔记
1 JavaScript设计模式深入分析 私有属性和方法:函数有作用域,在函数内用var 关键字声明的变量在外部无法访问,私有属性和方法本质就是你希望在对象外部无法访问的变量. 特权属性和方法:创建属 ...
- javascript设计模式学习之十七——程序设计原则与面向接口编程
一.编程设计原则 1)单一职责原则(SRP): 这里的职责是指“引起变化的原因”:单一职责原则体现为:一个对象(方法)只做一件事. 事实上,未必要在任何时候都一成不变地遵守原则,实际开发中,因为种种原 ...
- javascript设计模式学习之十二——享元模式
一.享元模式的定义及使用场景 享元模式是为了解决性能问题而诞生的设计模式,这和大部分设计模式为了提高程序复用性的原因不太一样,如果系统中因为创建了大量类似对象而导致内存占用过高,享元模式就非常有用了. ...
- javascript设计模式学习之十——组合模式
一.组合模式定义及使用场景 组合模式将对象组合成树形结构,用以表示“部分—整体”的层次结构,除了用来表示树形结构之外,组合模式还可以利用对象的多态性表现,使得用户对单个对象和组合对象的使用具有一致性. ...
- javascript设计模式学习之九——命令模式
一.命令模式使用场景及定义 命令模式常见的使用场景是:有时候需要向某些对象发送请求,但是并不知道请求的接受者是谁,也不知道请求的具体操作是什么.此时希望用一种松耦合的方式来设计程序,使得请求的发送者和 ...
- javascript设计模式学习之十六——状态模式
一.状态模式的定义 状态模式的关键是区分事务内部和外部的状态,事务内部状态改变往往会带来事务的行为改变. 状态模式中有意思的一点是,一般我们谈到封装,都是优先封装对象的行为,而非对象的状态.但在状态模 ...
- javascript设计模式学习之十三——职责链模式
一.职责链的定义和使用场景 职责链模式的定义是,职责链模式将一系列可能会处理请求的对象连接成一条链,请求在这些对象之间一次传递,直到遇到一个可以处理它的对象.从而避免请求的发送者和接收者之间的耦合关系 ...
随机推荐
- 领扣-无重复字符的最长子串-Python实现
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...
- Ubuntu16.04安装TFTP服务,完成开发板下载文件
1.安装TFTP服务 $ sudo apt-get install tftp-hpa tftpd-hpa 2.建立传递目录 $ mkdir tftp $ sudo chmod 777 tftp/ -R ...
- Go语言中结构体的使用-第2部分OOP
1 概述 结构体的基本语法请参见:Go语言中结构体的使用-第1部分结构体.结构体除了是一个复合数据之外,还用来做面向对象编程.Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性. ...
- 记账本APP(2)
今天下载了Hbuiler,生成了一个记账本APP,目前里面只可以 输入今日消费 明天将会做出来记录以及计算总额于月消费.
- IDEA-Debug调试操作
基本概念 快捷键和eclipse还是有区别的,不过基本概念是相通的 Step into F7 单步调试进入函数内部. Step over F8 单步调试不进入函数内部,如果装了金山词霸2006则 ...
- 20155327《Java程序设计》第二周学习总结
<Java程序设计>第二学习总结 教材学习内容总结 类型 byte(字节) shot(短整型) int(整型) long(长整型) float(浮点型) double(双精度) char( ...
- jenkins统计单元测试的覆盖率
前提:单元测试和被测代码在一个仓库 maven的pom配置 依赖增加 <dependency> <groupId>org.jacoco</groupId> < ...
- Qt-QML-电子罗盘
使用QML中的Canvas实现电子罗盘绘制,效果图如下 一个简单的电子罗盘,红色N极.其中中间飞机表示当前的指向, 还是比较简单的,直接上代码吧 /* 作者:张建伟 时间:2018年4月27日 简述: ...
- 3星|《给你讲个笑话:我是创业公司CEO》:创业成功就是上帝掷骰子
给你讲个笑话:我是创业公司CEO 作者有过数次创业经历,最后一次在济南创业,后来公司搬到北京,看书中的交代公司目前好像还不算太成功.书中交代作者公司的业务是文化产品的策划,没细说做什么,也没说做成过哪 ...
- SVN部署与简单使用
原文发表于cu:2016-05-24 参考文档: http://www.tuicool.com/articles/Yv2iyu7 http://www.centoscn.com/CentosServe ...