<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      淡水求咸

      博客園已經停止更新,請移步 http://lovecjh.com/

      導航

      Javascript函數調用的四種模式

        一  前言

        Javascript一共有四種調用模式:方法調用模式、函數調用模式、構造器調用模式以及apply調用模式。調用模式不同,對應的隱藏參數this值也會不同。

       

        二  方法調用模式

        函數作為對象的屬性時,稱為方法。此時函數(即方法)中的this對應是該對象。

      var myObject = {
        value:3,
        func:function(){
          alert(this.value);
        }
         };

      // 方法調用模式,this對應的是myObject對象
      myObject.func();  //3

        也可以寫成如下格式:

      var myObject = {
          value:3
      };
      
      myObject.func = function() {
          alert(this.value);
      }

      // 方法調用模式
      myObject.func();  //3

        上面,this對應的是myObject對象。

       

        三  函數調用模式

        函數調用模式即通常的函數調用,屬于全局性調用,此時this對應的是全局對象,即Window對象。

      var add = function(a, b) {
          return a + b;
      }
      
      // 函數調用模式 add(
      3,4); //7

        上面也可以寫成

      window.add = function(a, b) {
          return a + b;
      }

      // 函數調用模式
      add(3,4); //7

        下面來看看下面的測試題,以檢驗你是否了解了this。

      <script type="text/javascript">
         var add = function(a, b) {
              return a + b;
          }
      
          var myObject = {
              value:3
          };
      
          myObject.func = function() {
              var helper = function() {
                  this.value = add(this.value, this.value); 
              }
      
          // 函數調用模式   helper();
      }
        // 方法調用模式
         myObject.func();
      alert(myObject.value);
      </script>

        答案會是6嗎?仔細想想。

        答案為6的程序應該是這樣的:

      <script type="text/javascript">
          var add = function(a, b) {
              return a + b;
          }
      
          var myObject = {
              value:3
          };
      
          myObject.func = function() {
              var that = this; // this對應myObject對象   (1)
              var helper = function() {
                  //this.value = add(this.value, this.value); //這里調用模式為函數調用模式,而非方法調用模式,所以this對應全局對象   (2)
                  that.value = add(that.value, that.value);
              }
          
          // 函數調用模式   helper();
      }
        // 方法調用模式
         myObject.func();
      alert(myObject.value);
      </script>

        (1)處this在firefox調試如下:(方法調用模式處)

        

        (2)處this在firefox調試如下:(函數調用模式處)

        

       

        四  構造器調用模式

        若在函數前面通過new 來調用,其實是生成一新對象,this自然指向該新對象。

      var add = function(a, b) {
          return a + b;
      }
      
      // 構造器調用模式
      var obj = new add(3, 4);

        obj為一對象:

        

        對于構造器調用模式,如果函數返回值不是一個對象,則返回該新對象,即this。

       

        五  apply調用模式

        apply方法有兩個參數,第一個是要綁定給this的值,第二個是一個參數數組。
      // apply調用模式
      var
      sum = add.apply(null,[3,4]); // this對應全局變量,即window對象 var sum2 = add.apply(myObject,[3,4]); //this對應為myObject對象

       

        六  源碼

         源碼下載。

       

       

       

       

       

      posted on 2013-12-18 09:29  深圳彥祖  閱讀(5127)  評論(2)    收藏  舉報

      主站蜘蛛池模板: 国产午夜精品久久一二区| 国产无码高清视频不卡| 成人国产精品一区二区不卡| 欧美精品亚洲精品日韩专区| 97se亚洲国产综合自在线观看| 日韩A人毛片精品无人区乱码| 国产小受被做到哭咬床单GV| 国产91精品一区二区麻豆| 免费拍拍拍网站| 日本极品少妇videossexhd| 无码熟妇人妻AV影音先锋| 四虎亚洲国产成人久久精品| 日本高清视频网站www| 济南市| 欧美老熟妇乱子伦牲交视频 | 亚洲在战av极品无码| 国产精品va无码一区二区| 国产成人综合久久亚洲av| 熟妇女人妻丰满少妇中文字幕| 国产精品无码成人午夜电影| 少妇人妻偷人免费观看| 成人深夜节目在线观看| 亚洲精品区二区三区蜜桃| 国产成人综合在线女婷五月99播放| 亚洲国产一区二区三区久| 成年女人免费v片| 一本久道久久综合狠狠躁av| 国产播放91色在线观看| 亚洲女同性同志熟女| 久久精品国产亚洲av电影| 国模少妇无码一区二区三区| 亚洲人妻系列中文字幕| 中文字幕国产精品综合| 日韩高清视频 一区二区| 浦县| 国产成人午夜福利在线观看| 亚洲一区二区约美女探花| 精品人妻一区二区| 欧美福利电影A在线播放| 亚洲第一成人网站| 亚洲综合一区国产精品|