推荐阅读: JavaScript观察者模式(经典) 1.什么是观察者模式 观察者模式有时也称为发布--订阅模式,在观察者模式中,有一个观察者可以管理所有的目标,等到有状态发生改变的时候发出通知。(其实sql server中的发布订阅也是这个道理) 2.通俗解释 假如以前村里的广播是一个观察者,那么每个村民就是被观察对象,如果村子里有通知,政策发生改变的时候,就需要通过广播把这个消息发布出去,而不用直接一家家的跑去发通知。 3.代码观...
一种JavaScript的设计模式 //简单的类的设计模式 //定义一个类class1 function class1() { //构造函数 } //通过指定prototype对象来实现类的成员定义 class1.prototype = { someProperty:"simple", someMethod:function { //方法代码 }, //其实属性和方法 }在一个类的成员之间互相引用,必须通过this指针来进行。因为在JavaScript中第个属性和方法都是独立的,它们通过this指针联系在一个对象上。 //简单的带参数的...
代码如下: /* DisplayModule interface. */ var DisplayModule = new Interface(DisplayModule, [append, remove, clear]); /* ListDisplay class. */ //通过接口实现工厂,这是通过List方式显示RSS var ListDisplay = function(id, parent) { // implements DisplayModule this.list = document.createElement(ul); this.list.id = id; parent.appendChild(this.list); }; ListDisplay.prototype = { append: function(text) { va...
这本书中第一个重要的内容就是接口。大家对接口应该都不陌生,简单的说接口就是一个契约或者规范。在强类型的面相对象语言中,接口可以很容易的实现。但是在javascript中并没有原生的创建或者实现接口的方式,或者判定一个类型是否实现了某个接口,我们只能利用js的灵活性的特点,模拟接口。 在javascript中实现接口有三种方式:注释描述、属性验证、鸭子模型。 note:因为我看的是英文书,翻译水平有限,不知道有些词汇如何翻译,...
本文分上下两部分,上部讲基本模式(basic patterns):完全暴露法,下划线标记法和使用闭包;下部讲高级模式(Advanced Patterns),如何实现静态方法和属性,常量还有其他一些知识点。 封装是面向对象语言很基本也是很有用的特性,虽然javascript也可以称的上是面向对象语言,但他对封装的支持并不是很好,不像其他语言,只要使用private、protected就可以实现。但这并不是说就没有办法了,下面我就介绍下如何在javascript中...
在js中如何实现设计模式中的模板方法? 思路的产生必然要求熟悉js,如何实现?就很简单了,都知道在js中如果定义两个相同名称的方法,前一个方法就会被后一个方法覆盖掉,使用此特点就可以实现模板方法。例如在实际的项目中有很多页面操作的步骤基本相同,但局部细节却不一样。例如在我所在的项目中,就有很多展示数据库记录的页面,每个页面都存在读取记录,查询记录,增加删除,修改记录等相同的操作,但对应的后台方法却不一样。...
1. 单一职责 就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭到意想不到的破坏。软件设计真正要做的许多内容,就是发现职责并把那些职责互相分离。如果你多于一个动机去改变一个类,那么这个类就具有多于一个的职责。2. 开放封闭 软件实体(类,模块,函数等)...
记得早前就说过要和大家分享“javascript设计模式”,迟迟没写不是因为我懒,最近确实太忙,忙工作,忙旅游(啊哦?),好不容易这几天空闲了,接下来是兑现之前空口白话的时间了。 在讨论设计模式之前,请确认您已经有一定的脚本编程基础,如果不甚了解,建议可以先查阅本人很久之前写的这篇《浅谈javascript面向对象编程》请看下一篇文章。 讲到设计模式,不得不先重点着墨于“接口设计”,因为接口设计在设计模式中的意义太大了,...
折腾了半天,程序中使用jquery的load方法进行请求,很奇怪为啥第二次无法发送请求。百度了一把,谁知load是用get方式进行请求的,因此IE浏览器对 其进行缓存了。网上搜了很多解决方案,一大把,下面是我认为比较全面的解决方案。主要分为客户端解决和服务端解决。 1.客户端解决方案IE访问策略:Internet选项--浏览历史记录--设置-- Internet 临时文件的选项改为每次访问网页时也可以 1: 在AJAX请求的页面后加个随机函数,我们可以使...
先看下重现代码 1, gb2312.html 该文件编码为gb2312 代码如下: p { color: red; } 测试 function loadJS(src, charset) { var script = document.createElement('script'); script.src = src; script.charset = charset; var head = document.getElementsByTagName('head')[0]; head.appendChild(script); } 2, utf8.js 该文件编码是utf-8 代码如下: var p = document.createElement('p'); p.innerHTML = 'IE缓存...
代码如下: //设置缓存,获取设置的缓存,键值对形式, name value localStorage.getItem("key"); //获取键的值 localStorage.setItem("key", 1); //设置键的值
使用范围:OA、MIS、ERP等信息管理类的项目,暂时不考虑网站。 遇到的问题:完成一个项目,往往需要引用很多js文件,比如jQuery.js、easyUI等。还有自己写的一些列js文件,那么这些文件如何方便的加载,如果文件有变化如何才能让客户端及时更新缓存?如果能够提高点运行效率,那就更好了。 目标: 1、 可以方便的引用js文件。 2、 尽量使用各种缓存,避免频繁从服务器读取文件。 3、 如果js文件有更新或者增加、减少几个减少js文...
在开发测试中,如果选择ie,当编辑某条数据时,再回过头来进行编辑,会发现,里面的数据和没有编辑以前是一样的, 这和种情况下,解决ie缓存成了问题。我的方法是,在请求链接后面加上一个时间戳,就只可以避免这种问题的出现。代码如下: var getTimestamp=new Date().getTime(); //时间戳 var _url = "${pageContext.request.contextPath}/productData/addShow.do?productDataId="+value+"&timer=" + getTimestamp;
//为了兼容高版本chrome浏览器,此处不能读取缓存,故采用家随机数方式引入脚本 document.write("");
本文实例讲述了让html页面不缓存js的实现方法。分享给大家供大家参考。具体实现方法如下: 很多朋友都会碰到这样的情况:如果我们页面加载了js的话下次打开时也会是调用这个js缓存文件,但对于我们调试时是非常的不方便了,本文就来谈论如何解决这一问题,下面一起来看看。 不缓存JS的方法其实挺简单,CSS在某种条件下也可以如此使用; 先让大家了解下不缓存的一个简单的原理: 当浏览不同Url时,浏览器会自动将当前访问的地址进行...