亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

淺析js封裝和作用域

2019-11-20 22:32:35
字體:
來源:轉載
供稿:網友
基本的代碼如下
復制代碼 代碼如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title> 
</title>
<script src="jquery-1.4.4.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" class="button" value="保存"  />
 <input type="button" id="btnCancel" class="button" value="取消" onclick="javascript:t.AlertTest;" />
</body>
</html>

再點擊保存,取消時需要一定的操作,第一次的代碼如上:
點擊保存,根本沒反應,很奇怪,這種最常用的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" class="button" value="取消" onclick="javascript:t.AlertTest;" />

點擊沒反應,修改如下
復制代碼 代碼如下:

 <input type="button" id="btnCancel" class="button" value="取消" onclick="javascript:alertTestOuter;" />

點擊還是沒反應,也沒有錯誤,在修改如下:
復制代碼 代碼如下:

 <input type="button" id="btnCancel" class="button" value="取消" onclick="javascript:alertTestOuter();" />

這次有反應了,看來是少了一對括號。修改為封裝的方法如下:
復制代碼 代碼如下:

<input type="button" id="btnCancel" class="button" 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);
   }

相應的html修改如下:
復制代碼 代碼如下:

 <input type="button" id="btnCancel" class="button" value="取消" onclick="javascript:t.AlertTest('124');" />

點擊,看看是不是正確的傳遞了參數,一切正常,看來這樣就完成了。
最后整理js代碼:
把通用的js代碼放到一個js文件里,這里放到了common.js中,不同的代碼放在htm中,修改后的所有代碼如下:
復制代碼 代碼如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title> 
</title>
<script src="jquery-1.4.4.min.js" type="text/javascript"></script>
<script src="common.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" class="button" value="保存"  />
 <input type="button" id="btnCancel" class="button" value="取消" onclick="javascript:t.AlertTest('124');" />
</body>
</html>

common.js的代碼:
復制代碼 代碼如下:

 function functionTest(text)
    {
          var alertText=text  
             $("#btnSave").click(function (e) {     
       alertTestInnert();   
    });            
          this.AlertTest= function (text)
     {     
        alert(text);
     }

      function alertTestInnert()
     {
        alert(alertText);
     } 
    }   
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品男女猛烈高潮激情| 91中文精品字幕在线视频| 亚洲自拍偷拍在线| 精品久久久久久久久中文字幕| 亚洲性生活视频在线观看| 欧美一区视频在线| 国产精品成人一区二区三区吃奶| 中文字幕亚洲精品| 久久精品视频免费播放| 91香蕉嫩草神马影院在线观看| 日韩在线观看网站| 国产日韩精品综合网站| 久久这里只有精品视频首页| 亚洲国产精品一区二区三区| 成人国产亚洲精品a区天堂华泰| 亚洲欧美日韩精品久久亚洲区| 成人免费福利视频| 在线看欧美日韩| 欧美成人三级视频网站| 日韩天堂在线视频| 久久久久久久国产| 欧美激情免费在线| 国产日韩欧美日韩大片| 日韩专区在线播放| 亚洲精品国产精品国自产在线| 欧美俄罗斯乱妇| 亚洲精品欧美一区二区三区| 日韩av一区在线观看| 国产精品激情av在线播放| 日韩成人av在线播放| 亚洲成人久久网| 亚洲欧美在线一区二区| 国产女精品视频网站免费| 亚洲成人教育av| 色视频www在线播放国产成人| 久久久国产成人精品| 亚洲电影av在线| 欧美性猛交xxxx黑人猛交| 日韩精品免费观看| 亚洲欧美日韩中文在线制服| 亚洲欧洲在线免费| 国产精品视频免费在线| 92国产精品久久久久首页| 午夜精品久久久久久99热| 国产精品精品视频一区二区三区| 97国产在线观看| 亚洲第一区中文字幕| 欧美一级片久久久久久久| 欧美日本精品在线| 日韩av电影手机在线| 日韩在线高清视频| 91久久精品在线| 永久免费毛片在线播放不卡| 色妞在线综合亚洲欧美| 国产成人啪精品视频免费网| 精品视频久久久久久久| 国产日韩欧美中文| 日韩欧美在线网址| 久久综合88中文色鬼| 中日韩午夜理伦电影免费| 欧美男插女视频| 久久6精品影院| 国产精品高清在线| 欧美最顶级的aⅴ艳星| 中日韩午夜理伦电影免费| 亚洲毛片在线免费观看| 亚洲аv电影天堂网| 日韩国产中文字幕| 欧美另类精品xxxx孕妇| 日韩免费av片在线观看| 久久精品国产亚洲精品| 欧美电影免费播放| 亚洲在线免费观看| 日韩精品在线免费播放| 日韩av在线免费观看一区| 456亚洲影院| 91精品国产九九九久久久亚洲| 精品呦交小u女在线| 亚洲视频国产视频| 成人高h视频在线| 欧洲日本亚洲国产区| 成人免费淫片aa视频免费| 日韩在线精品视频| 高清一区二区三区四区五区| 欧美大荫蒂xxx| 欧美成人精品激情在线观看| 成人精品网站在线观看| 国产免费亚洲高清| 欧美日韩国产中文精品字幕自在自线| 亚洲美女中文字幕| 久久夜色精品国产亚洲aⅴ| 国产精品福利无圣光在线一区| 红桃视频成人在线观看| 欧美又大粗又爽又黄大片视频| 久久久久久久久久国产| 国产欧美欧洲在线观看| 最近日韩中文字幕中文| 久久在线免费视频| 国产精品日韩欧美| 俺去了亚洲欧美日韩| 日韩av电影在线播放| 欧洲成人在线观看| 2019国产精品自在线拍国产不卡| 亚洲精品网站在线播放gif| 91手机视频在线观看| 亚洲成人动漫在线播放| 国产在线精品成人一区二区三区| 亚洲人成在线播放| 亚洲高清久久久久久| 91精品国产高清自在线| 欧美日韩在线免费观看| 亚洲午夜国产成人av电影男同| 亚洲国产天堂久久综合网| 91精品国产91久久久久久最新| 97精品伊人久久久大香线蕉| 日韩在线观看免费网站| 亚洲天堂精品在线| 成人激情免费在线| 久久这里只有精品99| 91在线免费视频| 91日本视频在线| 久久五月天色综合| 日韩电影在线观看中文字幕| 亚洲图片欧美午夜| 国产欧美日韩精品在线观看| 欧美性xxxxx极品| 97色在线观看| 麻豆成人在线看| 精品香蕉在线观看视频一| 国产日本欧美一区| 77777少妇光屁股久久一区| 在线观看亚洲视频| 日韩高清有码在线| 欧美夜福利tv在线| 日本精品视频在线| 国产色视频一区| 国产98色在线| 成人黄色免费网站在线观看| 九九久久综合网站| 亚洲欧美国产日韩中文字幕| 欧美高清一级大片| 两个人的视频www国产精品| 亚洲国产精品字幕| 91精品国产自产在线观看永久| 欧美亚洲激情在线| 日韩av不卡电影| 欧美xxxx做受欧美| 日韩一区视频在线| 777精品视频| 尤物99国产成人精品视频| 精品中文字幕在线观看| 亚洲欧美成人一区二区在线电影| 欧美成人一区在线| 亚洲免费av电影| 日本一区二区在线免费播放| 性欧美亚洲xxxx乳在线观看| 久久精品欧美视频| 一区二区在线视频播放| 成人精品一区二区三区电影黑人| 亚洲美女精品成人在线视频| 日韩av综合中文字幕| 久久视频精品在线| 66m—66摸成人免费视频| 91大神福利视频在线|