js中的函數function

來源:互聯網
上載者:User

js中的函數function

js的function對象在調用過程中具有一個arguments的屬性,它是由指令碼解譯器建立的(這也是arguments建立的唯一方式)。arguments屬性可以看作是一個Array對象,它有length屬性,可以通過序號訪問每一個參數,而且通過argument的callee屬性可以擷取對正在執行的Function對象的引用。如下:

function factorial(n){  if(n<=n){   return 1;   }else{      return n*arguments.callee(n-1);   }}alert(factorial(5));

上面使用了callee屬性完成了一個遞迴的演算法。


Function的另一個屬性是caller,它指向正在調用當前函數的父函數對象。利用callee和caller屬性,可以很容易實現對堆棧的遍曆,如:

function fool(v1){   foo2(v1,v2,v3);}function foo2(v1,v2){  foo3(v1,v2,v2*v2);}function foo3(v1,v2,v3){  var foo=argument.callee;  while(foo&&(foo!=window)){  document.writeln('
調用參數:
','-------------------------------
'); var args=foo.argument;argn=args.length; for(var 1=0;i'); } document.writeln('
'); foo=foo.caller; }}foo(5);

Function是js中一個很特殊的對象,其特殊體現在他的多重身份上,如:

//function作為類的聲明和實現function ClassA(){  this.prop1="prop1";   this.prop2="prop2";}//function作為建構函式var obj=new CalssA();//輸出true,function作為類引用alert(obj instanceof CalssA);

Function可以聲明普通函數,這和其他語言的概念是一樣的,但Function還可以用於類的聲明和實現,對象的建構函式以及類的引用。上面的代碼中通過function關鍵字聲明了ClassA類,並通過this關鍵字聲明了兩個屬性prop1和prop2,然後在建立obj對象時,ClassA()由起到了物件建構函數的作用;最後代碼中使用instanceof關鍵字判斷obj對象是否是ClassA類的執行個體,此時ClassA又起到了類引用的作用。




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.