• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. javascript中callee與caller的區(qū)別

        時(shí)間:2024-10-06 09:45:56 JavaScript 我要投稿
        • 相關(guān)推薦

        javascript中callee與caller的區(qū)別

          callee

          callee是對(duì)象的一個(gè)屬性,該屬性是一個(gè)指針,指向參數(shù)arguments對(duì)象的函數(shù)

          首先我們來寫個(gè)階成函數(shù):

          function chen(x){if (x<=1) {return 1;} else{return x*chen(x-1);};};

          從這個(gè)函數(shù)中可以看出來,用到了遞歸函數(shù),要是改變了函數(shù)名,里面的函數(shù)名也要隨著改變,這樣很不方便所以我們用callee來試試

          function chen(x){if (x<=1) {return 1;}else{return x*arguments.callee(x-1);};};

          我們來分析一下為什么這樣寫:根據(jù)callee的定義,可以看出來callee是arguments對(duì)象的一個(gè)屬性,指向arguments對(duì)象的函數(shù),這個(gè)函數(shù)就是chen(chen=arguments.callee),這樣解釋應(yīng)該可以理解了吧。

          caller

          caller是函數(shù)對(duì)象的一個(gè)屬性,該屬性保存著調(diào)用當(dāng)前函數(shù)的函數(shù)的引用(指向當(dāng)前函數(shù)的直接父函數(shù))

          先來個(gè)例子吧

          function a(){b();};function b(){alert(b.caller);};a(); //結(jié)果就是彈出函數(shù)a和內(nèi)容

          我們來解釋一下吧,首先函數(shù)b的屬性caller調(diào)用當(dāng)前函數(shù)b的函數(shù)引用a(就是指向當(dāng)前函數(shù)b的父函數(shù)a),所以結(jié)果就是彈出 function a(){ b();};

          那么了解了caller和callee,那么可以不可以將二者結(jié)合在一起來使用呢

          function b(){alert(b.caller);};

          從這個(gè)代碼可以看出b函數(shù)中調(diào)用了b函數(shù)名,這樣當(dāng)函數(shù)名改變時(shí)就很不方便,我們需要替換里面的那個(gè)b

          前面我們知道用什么方法可以指向當(dāng)前對(duì)象,下面我們就來修改一下:

          (function a(){b();})();function b(){alert(arguments.callee.caller);};

          從代碼中可以看出我們用arguments.callee代替了b函數(shù),所以解決了一下麻煩。。。。。

          以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【javascript中callee與caller的區(qū)別】相關(guān)文章:

        JavaScript中的with關(guān)鍵字07-24

        在Java中執(zhí)行JavaScript代碼07-14

        Javascript中typeof 用法歸納09-27

        抽象語法樹在JavaScript中的應(yīng)用08-18

        JavaScript中的三種對(duì)象10-24

        perl- javascript中class的機(jī)制05-03

        JavaScript類定義原型方法的兩種實(shí)現(xiàn)的區(qū)別07-11

        JavaScript中push(),join() 函數(shù)實(shí)例詳解09-05

        詳解JavaScript中的splice()使用方法08-20

        javascript中for/in循環(huán)以及常見的使用技巧06-24

        在线咨询
        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 一级爱做片免费观看久久 | 亚洲精品中文字幕无线码 | 婷婷色一二三区波多野衣 | 中文字幕久久激情 | 亚洲国产精品高清在线第1页 | 亚洲成AV人在线观看福利 |

            javascript中callee與caller的區(qū)別

              callee

              callee是對(duì)象的一個(gè)屬性,該屬性是一個(gè)指針,指向參數(shù)arguments對(duì)象的函數(shù)

              首先我們來寫個(gè)階成函數(shù):

              function chen(x){if (x<=1) {return 1;} else{return x*chen(x-1);};};

              從這個(gè)函數(shù)中可以看出來,用到了遞歸函數(shù),要是改變了函數(shù)名,里面的函數(shù)名也要隨著改變,這樣很不方便所以我們用callee來試試

              function chen(x){if (x<=1) {return 1;}else{return x*arguments.callee(x-1);};};

              我們來分析一下為什么這樣寫:根據(jù)callee的定義,可以看出來callee是arguments對(duì)象的一個(gè)屬性,指向arguments對(duì)象的函數(shù),這個(gè)函數(shù)就是chen(chen=arguments.callee),這樣解釋應(yīng)該可以理解了吧。

              caller

              caller是函數(shù)對(duì)象的一個(gè)屬性,該屬性保存著調(diào)用當(dāng)前函數(shù)的函數(shù)的引用(指向當(dāng)前函數(shù)的直接父函數(shù))

              先來個(gè)例子吧

              function a(){b();};function b(){alert(b.caller);};a(); //結(jié)果就是彈出函數(shù)a和內(nèi)容

              我們來解釋一下吧,首先函數(shù)b的屬性caller調(diào)用當(dāng)前函數(shù)b的函數(shù)引用a(就是指向當(dāng)前函數(shù)b的父函數(shù)a),所以結(jié)果就是彈出 function a(){ b();};

              那么了解了caller和callee,那么可以不可以將二者結(jié)合在一起來使用呢

              function b(){alert(b.caller);};

              從這個(gè)代碼可以看出b函數(shù)中調(diào)用了b函數(shù)名,這樣當(dāng)函數(shù)名改變時(shí)就很不方便,我們需要替換里面的那個(gè)b

              前面我們知道用什么方法可以指向當(dāng)前對(duì)象,下面我們就來修改一下:

              (function a(){b();})();function b(){alert(arguments.callee.caller);};

              從代碼中可以看出我們用arguments.callee代替了b函數(shù),所以解決了一下麻煩。。。。。

              以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。