javascript 之 函數

注意:函數名僅僅是一個包含指針的變量而已算法

函數內部屬性數組

     arguments 和this 兩個特殊對象app

      arguments:類數組對象,包含出入函數中的全部參數,主要用途是保存函數參數函數

                          callee:該屬性是一個指針,指向擁有這個arguments對象的函數,在嚴格模式下運行,會致使錯誤this

     例:function factorial(num){spa

      if(num<=1)firefox

         return 1;prototype

                     else 指針

         return num*(factorial(num-1))       對象

            }

       此處用了遞歸算法,若函數名不變則沒有問題,可是函數名變化,那麼內部的名字也要變,存在耦合關係,爲了消除這種耦合,能夠使用callee           

    function factorial(num){

      if(num<=1)

         return 1;

                     else 

         return num*arguments.callee(num-1)      

               }

函數的屬性和方法:

      每一個函數都包含該兩個屬性

            length:表示函數但願接收的命名參數的個數

            prototype:toString()和valueOf()等方法實際都保存在prototype名下,在建立自定義類型以及實現繼承時,該屬性都是極爲重要的

       每一個函數都包含兩個非繼承而來的方法

            apply:接收兩個參數:一個是運行函數的做用域,另個參數是參數數組 或者 arguments對象

            call():基本和apply相同,可是除了this外,傳遞給函數的參數必須逐個列舉出來

            例:function sum(num1,num2){ return num1+num2}

                   function applySum1(num1,num2){ return sum.apply(this , arguments)} 或者arguments替換爲[num1,num2]

            例:function callSum(this,num1,num2){ return sum.call(this,num1,num2)};

        call()和apply()強大的地方是擴充函數賴以運行的做用域

             例如 :

              window.color=red;     var o={ color :blue}

              function sayColor(){ alert (this.color)} 

               sayColor.call(this);//red

               sayColor.call(window);//red

               sayColor.call(o);//blue

        bind()方法:兼容性 ie9+,firefox4,safari5.1.....

               var objectSayColor=sayColor.bind(o); objectSayColor();//blue

基本包裝類型:Boolean,Number,String

          String: 字符串是基本類型值,不該該存在方法,但爲了這種直觀的操做,後臺已經作了處理

                例:var s1=' some text '

                       var s2= s1.substring(2);

                 能夠理解爲:(1)建立String類型的實例  (2)在實例上調用指定的方法 (3)銷燬這個實例

                  例:var s1=new String(' some text')   var s2=s1.substring(2)    s1=null;

          Boolean:該實例重寫了valueOf()方法,返回基本類型值true或false,重寫了toString()方法,返回字符串‘true’ 或‘false’,在實際中不怎麼用到

                 var falseObject=new Boolean(false);

                 var result = falseObject && true;  //返回true

                 注意:全部對象都會被轉爲true

          Number:也重寫了valueOf(),toLocaleString()和toString()方法

                      toFixed()://通常帶有0-20個小數位

                    例:var  num= 10   num.toFixed(2);   //10.00        var num=10.005   num.Fixed(2) //10.01 對多處的小數位進行四捨五入   

相關文章
相關標籤/搜索