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

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

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

      JavaScript中的this關鍵字

      在JavaScript中,this通常綁定到函數被調用的對象上,這種默認綁定在多數情況下是正常的,但是在某些情況下,this的這種綁定會丟失,比如,將函數作為參數傳遞給另外一個函數,這種默認的綁定就丟失了,例如:

      var myObj = {
         name: 'A nice demo!',
         fx: function() {
            alert(this.name);
         }
      };

      function runFx(fx) {
         fx();
      }

      window.name = 'I am a nice window';

      myObj.fx();  // 在這里,將會提示 A nice demo!

      runFx(myObj.fx); // 在這里,得到的提示將會是 I am a nice window

      為什么會出現這種情況呢?因為在第二次調用中,myObj.fx作為參數傳遞給了runFx,在函數runFx中執行時fx丟失了對myObj的默認綁定,而綁定到了runFx的默認綁定window上,所以第二次調用時得到的提示為I am a nice window,而這個往往不是我們需要的結果。

      在Ajax橫行的今天,要編寫復雜的客戶端組件,不可避免的要將函數名作為參數傳遞,Prototype注意到了這個問題,MS ASP.Net Ajax也注意到了這個問題,不知道你注意了沒有?

      Prototype提供的解決方案是bind方法,在Prototype的官方文檔給出的描述是:Provides aguaranteed-binding equivalent of the original function, possibly with pre-filled arguments. 上面的例子如果使用Prototype的話,可以修改如下:

      var myObj = {
         name: 'A nice demo!',
         fx: function() {
            alert(this.name);
         }
      };

      function runFx(fx) {
         fx();
      }

      window.name = 'I am a nice window';

      myObj.fx();  // 在這里,將會提示 A nice demo!

      var fx2 = myObj.fx.bind(myObj) // 先做一個綁定,
      runFx(fx2); // 在這里,得到的提示將會是 A nide demo !這個往往是我們需要的結果

      MS Ajax提供的解決方案是Function.createDelegate函數,createDelegate方法是個靜態方法,可以直接調用。如果使用MS Ajax庫的話,可以將上面的例子修改為:

      var myObj = {
         name: 'A nice demo!',
         fx: function() {
            alert(this.name);
         }
      };

      function runFx(fx) {
         fx();
      }

      window.name = 'I am a nice window';

      myObj.fx();  // 在這里,將會提示 A nice demo!

      var fx2 = Function.createDelegate(myObj, myObj.fx) // 按照微軟的說法,先做一個委托,
      runFx(fx2); // 在這里,得到的提示將會是 A nide demo !這個往往是我們需要的結果

      這看起來只是一個小問題,但是如果不注意的話卻會造成很大的問題。引用Prototype中的原話:As discussed on the general Function page,binding can be a pretty tricky thing sometimes.

      posted @ 2007-03-12 23:53  張志敏  閱讀(2401)  評論(17)    收藏  舉報
      主站蜘蛛池模板: 中文字幕人妻中文AV不卡专区| 国产一区二区三区精品综合| 中文字幕国产日韩精品| 久久久久青草线蕉亚洲| 成人3D动漫一区二区三区| 祁阳县| 国产成人无码av一区二区| 国产稚嫩高中生呻吟激情在线视频| 欧美成人看片黄A免费看| 國产AV天堂| 国产亚洲精品自在久久vr| 99久久精品国产一区色| 日韩深夜福利视频在线观看| 亚洲国产欧美一区二区好看电影| 亚洲激情在线一区二区三区| 成人又黄又爽又色的视频 | 18禁午夜宅男成年网站| 亚洲精品成人一二三专区| 国产睡熟迷奷系列网站| 黄又色又污又爽又高潮| 久久高清超碰AV热热久久 | 三级国产在线观看| 苍井空一区二区三区在线观看| 当阳市| 中文字幕在线精品国产| 日本一区二区三本视频在线观看| 饥渴少妇高潮正在播放| 国产精品老熟女一区二区| 国产成人亚洲无码淙合青草| 亚洲精品三区四区成人少| 婷婷四房播播| 香港日本三级亚洲三级| 国产三级精品三级在线区| 三级三级三级A级全黄| 欧美成人精品手机在线| 亚洲欧洲日产国产 最新| 国产成人精品午夜福利在线观看 | √天堂资源地址在线官网| 国产午夜三级一区二区三| 欧美熟妇乱子伦XX视频| 亚洲国产成人无码AV在线影院L|