前言:随着js应用场景的普遍,“能用js的场景最终都将使用js解决”,足以说明它的魅力,所以掌握js是必不可少的。javascript
回顾一下以前使用js 的方法java
场景:ajax
这个布局分为三部分,上,左,右,点击左部按钮会进行ajax请求,返回不一样的界面浏览器
返回a界面,a界面会引用a.js缓存
返回b界面,b界面会引用b.js函数
js是客户端脚本,所以加载js文件以后,用户没有清除缓存以前文件就是一直存在的,所以存在一些缓存问题。布局
问题1:当a.js加载事后,在b.js中可使用a.js的方法和行为,这样就会存在干扰,尤为是定时器行为this
当a.js加载以后就会每隔1s执行一次isAlert();由于使用的是ajax,因此即便你已经离开了这个界面仍然会每隔1s执行一次isAlert();如图对象
问题2:如上所试,a.js和b.js有两个同名函数,如果在c页面同时要用到这两个函数,就比较麻烦,要么在新建一个c.js,复制两个函数并改为不一样的名字而后引入。blog
秉承着不搞事不舒服的原则,开始折腾之旅
分析:若只有问题1,以最笨的方法来想,就是写个js每一次请求以前删除本地浏览器的全部缓存,可是这样形成的问题有点大,最突出的问题就是ajax是局部刷新,刷新后的页面是嵌入在原页面以内,所以来讲原界面的一些依赖js是不能被删除的。同时给问题2的解决产生了较大难度。根据万事万物皆对象的原则,参考java的获得一些思路
为何不能将每一个js文件当作一个类呢?
一个js文件就是一个对象,对象.属性,对象.行为。一样的如果能封装,拆包,则就能完美的作到互不干扰
begin
在a页面:
<a href="javascript:prseonA.isAlert()">AisAlert</a>
在b页面
<a href="javascript:prseonB.isAlert()">BisAlert</a>
这样一同将问题2解决
在c页面
<a href="javascript:prseonA.isAlert()">AisAlert</a> <a href="javascript:prseonB.isAlert()">BisAlert</a>
抽象:有许多杯子,有许多人,如果没有标明全部者,常常会发生拿错的状况,尤为是当两个杯子外表相近的时候。当标明所属的时候就不会发生这个问题。从口渴的时候直接去拿杯子,变成去拿本身的杯子。
以上的写法是在加载文件的时候自动建立了对象
修改成如下
function prseonA(){ this.isAlert=function () { alert("说不上爱别说谎,就一点喜欢"); } }
<a href="javascript:new prseonA().isAlert()">AisAlert</a>
总结:将’一切皆对象‘从理解化为实用