js函數定義和函數調用總結


 

一:函數定義分為兩大類,兩大類里又可以細分

   1,普通函數聲明

      例如function a(x){return x+1}

   2,函數表達式來定義有函數名(遞歸調用時有用,一般不用):例如

               var a = function face(x){

                        if(x<1)return 1;

                        else return x*face(x-1)

                };   //可以用來進行遞歸調用

  3,函數表達式來定義函數名,例如

                  var a=function(x){

                      return x+1;

                   };

    調用方式為a(x)

    也可以定義完直接調用  var a =(function(x){renturn x*x}(10))

    4,當作對象的一個方法來定義

       var o={

          y:2,

           m:function(x){

              console.log(x+this.y) //3

    }

      }

      o.m(1);

 

二:函數調用

    1)普通函數調用  例如: a(x,y)

         this一般不出現在函數里,即使存在也只是用來判斷是否為嚴格模式,a(x,y)

    2)方法調用:   o.m=function(){}

           a. 指的是調用對象里的方法,調用用o.m(x,y),也可以用【】進行調用,例如0["m"](x,y);

           b. 可以繼續訪問返回值中的方法:customer.f().m();
           c. this在方法里邊代表方法所在的對象也就是o,通過this可以調用o對象里的所有屬性。

           d.如果對象里,函數嵌套函數,被嵌套的函數里的this不指向該對象

              var o={
        m:function(){
          var seft=this;
          console.log(this===o);//true
          f();
                    function f(){
                         console.log(this===o)//false
                         console.log(seft===o)//true
                      }
                    }
               }
            o.m();

         3)  構造函數調用

           var o=new Object();  或者var o=new Object;如果不帶參數也可以忽略后邊的括號

          a,構造函數頂以后會創建一個新空對象,該對象繼承構造函數的prototype屬性。

          b,this指向新創建的對象,可以用來引用這個對象的上下文

          c,返回值永遠是這個對象,如果指出return的是一個對象那么返回值就是一個對象。

                       如果有return但沒有指定值,或者返回一個原始值,那么回忽略這個返回值,返回值還是這個新對象。

          4)間接調用

             用call()和apply()進行調用,(稍后補充)

           

 

       

          

      

 

      

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM