知识大全 浅析js封装和作用域

Posted

篇首语:内心简单,知足常乐,便是余生最美好的养生。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 浅析js封装和作用域相关的知识,希望对你有一定的参考价值。

在编写web软件时 遇到一些可以共用js的情况 于是就想着如何封装js代码 基本需求很简单 其实就是根据不同的情况封装js代码  

  基本的代码如下

复制代码 代码如下: < xmlns=" <head><title>  </title> <script src=jquery min js type=text/javascript></script> <script type=text/javascript>          var text="test";     var   t=new functionTest(text);      function functionTest(text)               var alertText=text                $("#btnSave") click(function (e)              alertTestInnert();        );                       this AlertTest=function ()                    alert(alertText);              function alertTestInnert()              alert(alertText);                  function alertTestOuter()            alert(text);        </script> <body>  <input type=button id="btnSave" value="保存"  />  <input type=button id="btnCancel" value="取消" onclick="javascript:t AlertTest;" /> </body> </>

   再点击保存 取消时需要一定的操作 第一次的代码如上 点击保存 根本没反应 很奇怪 这种最常用的jquery绑定事件竟然不起作用了 后来一比较才知道 其实自己忘了 绑定应该在$(document) ready(function () )中进行 js修改如下

复制代码 代码如下:  var text="test";     $(document) ready(function ()       var   t=new functionTest(text);   );        function functionTest(text)               var alertText=text                $("#btnSave") click(function (e)              alertTestInnert();        );                       this AlertTest= function ()                    alert(alertText);              function alertTestInnert()              alert(alertText);                  function alertTestOuter()            alert(text);   

   修改后 点击保存可以了 而且正确的传递了参数 这样就可以保证在不同点的情况下传递不同的参数了 但还有一种情况 页面会动态生成一些标签 这些标签的点击事件也需要处理 再次以取消按钮为例 由于是动态生成 就不能使用和保存一样的方法了 只能使用onclick="javascript:t AlertTest;"这种类似的绑定 于是有测试如下 修改

复制代码 代码如下:  <input type=button id="btnCancel" value="取消" onclick="javascript:t AlertTest;" />

   点击没反应 修改如下

复制代码 代码如下:  <input type=button id="btnCancel" value="取消" onclick="javascript:alertTestOuter;" />

   点击还是没反应 也没有错误 在修改如下

复制代码 代码如下:  <input type=button id="btnCancel" value="取消" onclick="javascript:alertTestOuter();" />

   这次有反应了 看来是少了一对括号 修改为封装的方法如下

复制代码 代码如下: <input type=button id="btnCancel" value="取消" onclick="javascript:t AlertTest();" />

   点击没反应 提示Uncaught ReferenceError: t is not defined 看来是变量t没有定义 作用域起作用了 于是修改js如下 也就是把变量t放到外边 赋值放在里边 就是如下

复制代码 代码如下:   var   t;       var text="test";     $(document) ready(function ()           t=new functionTest(text);   );        function functionTest(text)               var alertText=text                $("#btnSave") click(function (e)              alertTestInnert();        );                       this AlertTest= function ()                    alert(alertText);              function alertTestInnert()              alert(alertText);                  function alertTestOuter()            alert(text);   

   最后一步 如何给取消调用的方法传递参数? 第一步修改js如下 也就是把取消调用的函数改为需要传递参数的方法 代码如下

复制代码 代码如下:   var   t;       var text="test";     $(document) ready(function ()           t=new functionTest(text);   );        function functionTest(text)               var alertText=text                $("#btnSave") click(function (e)              alertTestInnert();        );                       this AlertTest= function (text)                    alert(text);            function alertTestInnert()              alert(alertText);                  function alertTestOuter()            alert(text);   

   相应的修改如下

复制代码 代码如下:  <input type=button id="btnCancel" value="取消" onclick="javascript:t AlertTest( );" />

   点击 看看是不是正确的传递了参数 一切正常 看来这样就完成了 最后整理js代码 把通用的js代码放到一个js文件里 这里放到了mon js中 不同的代码放在中 修改后的所有代码如下

复制代码 代码如下: < xmlns=" <head><title>  </title> <script src=jquery min js type=text/javascript></script> <script src=mon js type=text/javascript></script> <script type=text/javascript>        var   t;//需要定义的外边 否则点击取消时 不能访问到变量t       var text="test"; //传递的参数    $(document) ready(function ()                 t=new functionTest(text); //给t赋值 定义不能放在这里边  );     </script> <body>  <input type=button id="btnSave" value="保存"  />  <input type=button id="btnCancel" value="取消" onclick="javascript:t AlertTest( );" /> </body> </>

   mon js的代码

复制代码 代码如下: cha138/Article/program/Java/Javascript/201311/25500

相关参考

知识大全 如何封装JS和CSS文件为服务器端控件

如何封装JS和CSS文件为服务器端控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们以封装

知识大全 一个封装js代码-----展开收起效果示例

  第一次靠自己完整的封装的小特效有点小小的兴奋和大家分享下希望能对和我一样在探索的童鞋们有点帮助js部分复制代码代码如下:varshow_obj=function(objatob)$(obj)bin

知识大全 一个AJAX自动完成功能的js封装源码[支持中文]第1/2页

一个AJAX自动完成功能的js封装源码[支持中文]第1/2页  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 浅析php变量修饰符static的使用

  静态变量仅在局部函数域中存在但当程序执行离开此作用域时其值并不丢失看看下面的例子:复制代码代码如下:functiontest()static$a=;$a++;echo$a;  test();//t

知识大全 浅析document.createDocumentFragment()与js效率

浅析document.createDocumentFragment()与js效率  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容

知识大全 浅析Js(Jquery)中,字符串与JSON格式互相转换的示例

浅析Js(Jquery)中,字符串与JSON格式互相转换的示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 利用脚本封装,方便实现网站悬浮广告

  下面是JS脚本(floatdivjs)  /*====================================================================== 

知识大全 jQuery封装的获取Url中的Get参数

jQuery封装的获取Url中的Get参数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  js的

封装阳台怎样防止被工人“烧尺”骗钱呢?封装阳台的作用是什么?

封装阳台“烧尺”就是烧钱.自己动手防被骗窗户是居民与外界的一道防线,在家庭装修工程中,一般都要进行封阳台的作业,特别是住楼房底层的,更要对阳台进行处理。封阳台既可以阻挡噪音的侵入、风雨的袭击、起到保温

知识大全 JavaScript跨域问题的解决方案

JavaScript跨域问题的解决方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JS跨域问