激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

javascript中callee與caller的區別

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

javascript中callee與caller的區別

  callee

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

  首先我們來(lái)寫(xiě)個(gè)階成函數:

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

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

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

  我們來(lái)分析一下為什么這樣寫(xiě):根據callee的定義,可以看出來(lái)callee是arguments對象的一個(gè)屬性,指向arguments對象的函數,這個(gè)函數就是chen(chen=arguments.callee),這樣解釋?xiě)摽梢岳斫饬税伞?/p>

  caller

  caller是函數對象的一個(gè)屬性,該屬性保存著(zhù)調用當前函數的函數的引用(指向當前函數的直接父函數)

  先來(lái)個(gè)例子吧

  function a(){b();};function b(){alert(b.caller);};a(); //結果就是彈出函數a和內容

  我們來(lái)解釋一下吧,首先函數b的屬性caller調用當前函數b的函數引用a(就是指向當前函數b的父函數a),所以結果就是彈出 function a(){ b();};

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

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

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

  前面我們知道用什么方法可以指向當前對象,下面我們就來(lái)修改一下:

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

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

  以上所述就是本文的全部?jì)热萘,希望大家能夠喜歡。

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

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

在Java中執行JavaScript代碼07-14

Javascript中typeof 用法歸納09-27

抽象語(yǔ)法樹(shù)在JavaScript中的應用08-18

JavaScript中的三種對象10-24

perl- javascript中class的機制05-03

JavaScript類(lèi)定義原型方法的兩種實(shí)現的區別07-11

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

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

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

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频