javascript 对象的设计模式
1、为什么学习设计模式:http://www.iteye.com/news/32092 或 https://blog.csdn.net/pigpigpig4587/article/details/48630223 ( 设计模式的作用是让人们写出可复用和可维护的程序)
(个人):设计模式,可以看做是 创建对象的 函数的一种代码风格(本质上就是通过经验积累,总结了几种比较好的这种函数结构)。不同的设计模式,应对变动的需求,处理效果是有很大差异的;如果不考虑设计模式,随意用,需求的开发都是可以实现的。
但是需求改变,维护的时候,不同的设计模式 维护难易就会很明显。设计模式 讲的是创建对象的 类 或 函数(因为对象除了构造函数创建,也可以用函数return一个对象进行创建,如 单例模式)。
2、浅谈JS的一些设计模式 : https://www.jianshu.com/p/010071439eaa
3、Javascript设计模式 : https://www.cnblogs.com/chenxygx/p/5754101.html
4、常用的javascript设计模式 : https://www.cnblogs.com/xianyulaodi/p/5827821.html (这个比较详细) 或 https://www.cnblogs.com/imwtr/p/9451129.html
5、单例模式 :
使用场景:
单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如全局缓存、浏览器的window对象、loading效果。在js开发中,单例模式的用途同样非常广泛。试想一下,当我们
单击 右上角登录按钮的时候,页面中会出现一个登录框 (这个组件不能事先创建好,使用显隐控制。因为只有未登入的用户才会需要创建),而这个浮窗是唯一的,无论单击多少次登录按钮,这个浮窗只会被创建一次。因此这个登录浮窗就适合用单例模式。
var single = (function(){
var unique;
function getInstance(){
// 如果该实例存在,则直接返回,否则就对其实例化
if( unique === undefined ){
unique = new Construct();
}
return unique;
}
function Construct(){
// ... 生成单例的构造函数的代码
}
return {
getInstance : getInstance
}
})();
上面是 参考链接中 构造函数单例模式的 创建。基于这种单例模式,可以变成只执行一次函数的 单例模式 。
var single = (function(){
var unique; // 返回的函数中有指向 unique变量,所以函数执行完毕后,这个变量还是保存在内存中的。
function getInstance(){
// 如果该实例存在,则直接返回,否则就对其实例化
if( unique === undefined ){
unique = construct();
}
return unique;
}
function construct(){
// ... 执行一次 功能的代码
console.log('uu');
return true;
}
return getInstance;
})();
个人总结:单例模式,利用了闭包的特性。函数执行完,但是函数内某些变量没有被回收的特点。 为什么闭包函数中 某些变量不被回收的原理 参考:https://www.cnblogs.com/wfblog/p/8951886.html
6、观察者模式(发布订阅模式):
应用场景:
这个模式要先说应用场景,比较好理解。
打一个离我们比较近的一个场景,博客园里面有一个订阅的按钮(貌似有bug),比如小A,小B,小C都订阅了我的博客,当我的博客一有更新时,就会统一发布邮件给他们这三个人,就会通知这些订阅者
7、
总结:
javascript 对象的设计模式的更多相关文章
- 一种JavaScript 类的设计模式
一种JavaScript 类的设计模式尽管前面介绍了如何定义一个类,如何初始化一个类的实例,但既可以在function定义的函数体中添加成员,又可以用prototype 定义类的成员,代码显的很混乱, ...
- 3种创建、调用JavaScript对象的方法
hey you guys,两个月没有写技术博客了.作为一名有理想.有抱负的程序员,两个月不写技术博客,真该打.业精于勤,荒于嬉.行成于思,毁于随.勤奋是必不可少的,今后养成一周至少一篇博客的习惯.好了 ...
- JavaScript 中常见设计模式整理
开发中,我们或多或少地接触了设计模式,但是很多时候不知道自己使用了哪种设计模式或者说该使用何种设计模式.本文意在梳理常见设计模式的特点,从而对它们有比较清晰的认知. JavaScript 中常见设计模 ...
- 面向对象的JavaScript --- 原型模式和基于原型继承的JavaScript对象系统
面向对象的JavaScript --- 原型模式和基于原型继承的JavaScript对象系统 原型模式和基于原型继承的JavaScript对象系统 在 Brendan Eich 为 JavaScrip ...
- Javascript常用的设计模式详解
Javascript常用的设计模式详解 阅读目录 一:理解工厂模式 二:理解单体模式 三:理解模块模式 四:理解代理模式 五:理解职责链模式 六:命令模式的理解: 七:模板方法模式 八:理解javas ...
- 深入JavaScript对象(Object)与类(class),详细了解类、原型
JavaScript基于原型的对象机制 JavaScript原型上的哪些事 一.JavaScript基于原型的对象机制 JavaScript对象是基于原型的面向对象机制.在一定程度上js基于原型的对象 ...
- 初识JavaScript对象
JavaScript对象语法.类型.属性 属性描述符(getOwnPropertyDescriptor().defineProperty()) [[Get]].[[Put]].Getter.Sette ...
- json与JavaScript对象互换
1,json字符串转化为JavaScript对象: 方法:JSON.parse(string) eg:var account = '{"name":"jaytan&quo ...
- javaScript对象-基本包装类型的详解
本人按书上的内容大致地把javaScript对象划分成“引用类型”.“基本包装类型”和“内置对象”三块内容. 我们这篇先了解下基本包装类型的详细用法吧! 一.我们先解下相关概念: 1.引用类型的值(对 ...
随机推荐
- java File类的使用以及一些函数
package file; import java.io.File; import java.io.IOException; import org.junit.jupiter.api.Test; /* ...
- 9.26-mkdir,tree,touch命令
mkdir -- 创建文件 [root@wen data]# mkdir --help 用法:mkdir [选项]... 目录... 若指定目录不存在则创建目录. 长选项必须使用的参数对于短选项时也是 ...
- Linux测试端口的连通性的四种方法
目录 1.telnet 2.ssh 3.crul 4.wget 方法一.telnet telnet为用户提供了在本地计算机上完成远程主机工作的能力,因此可以通过telnet来测试端口的连通性,具体用法 ...
- JPA project Change Event Handler问题解决
eclipse使用的是有经常会出现JPA project Change Event Handler(watering)很卡 网上的解决办法是 [Help > Installation Detai ...
- spring声明式的事务管理
spring支持声明式事务管理和编程式事务管理两种方式. 编程式事务使用TransactionTemplate来定义,可在代码级别对事务进行定义. 声明式事务基于aop来实现,缺点是其最细粒度的事务声 ...
- PHP curl get post请求
POST请求: public function postUrl($url, $postData = false, $header = false) { $ch = curl_init($url); c ...
- SPRING CLOUD微服务DEMO-下篇
目录 1 Hystix 1.1 简介 1.2 配置并测试 2. Feign 2.1 简介 2.2 使用Feign 2.3 负载均衡 2.4 Hystrix支持 2.5.请求压缩 3. Zuul网关 3 ...
- spring boot 尚桂谷学习笔记11 数据访问03 JPA
整合JPA SpringData 程序数据交互结构图 (springdata jpa 默认使用 hibernate 进行封装) 使用之后就关注于 SpringData 不用再花多经历关注具体各个交互框 ...
- static_关键字
static关键字 1.在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所以对象来说,static成员变量只有一份. 2.用stati ...
- Django 上下文管理器的应用
使用场景:模板继承可以减少页面内容的重复定义,实现页面内容的重用.个人博客右侧的导航栏都是继承base页面从而让代码得到最大程度的复用.但是当父模板中有动态数据的话,这些动态数据在子模版中是不会显示的 ...