javascript中函數的深入理解

          unction funcName(){
                 //函數體
          }
          //等價于
          var funcName=function(){
                 //函數體
          }

            但前面一種方式創建的是有名函數,而后面是創建了一個無名函數,只是讓一個變量指向了這個無名函數。在使用上僅有一點區別,就是:對于有名函數,它可以出現在調用之后再定義;而對于無名函數,它必須是在調用之前就已經定義。例如:
          script language="JavaScript" type="text/javascript">
          <!--
          func();
          var func=function(){
                 alert(1)
          }
          //-->
          </script>

            這段語句將產生func未定義的錯誤,而:


          <script language="JavaScript" type="text/javascript">
          <!--
          func();
          function func(){
                alert(1)
          }
          //-->
          </script>

            則能夠正確執行,下面的語句也能正確執行:


          <script language="JavaScript" type="text/javascript">
          <!--
          func();
          var someFunc=function func(){
                alert(1)
          }
          //-->
          </script>

          認識函數對象(Function Object)

            可以用function關鍵字定義一個函數,并為每個函數指定一個函數名,通過函數名來進行調用。在JavaScript解釋執行時,函數都是被維護為一個對象,這就是要介紹的函數對象(Function Object)。

            函數對象與其他用戶所定義的對象有著本質的區別,這一類對象被稱之為內部對象,例如日期對象(Date)、數組對象(Array)、字符串對象 (String)都屬于內部對象。這些內置對象的構造器是由JavaScript本身所定義的:通過執行new Array()這樣的語句返回一個對象,JavaScript內部有一套機制來初始化返回的對象,而不是由用戶來指定對象的構造方式。



          JavaScript為函數對象定義了兩個方法:apply和call,它們的作用都是將函數綁定到另外一個對象上去運行,兩者僅在定義參數的方式有所區別:

          Function.prototype.apply(thisArg,argArray);
          Function.prototype.call(thisArg[,arg1[,arg2…]]);

          在javascript的繼承中可以使用其方法


          例如:
          function ClassA(sColor){
              this.color=sColor;
              this.sayColor=function()
              {
              alert(this.color);
              }
          }
          function ClassB(sColor,sName){
              ClassA.call(this,sColor);
              或者
              ClassA.apply(this, new Array(sColor));
              this.name=sName;
              this.sayName=function()
              {
              alert(name);
              }
          }

          posted on 2008-01-17 10:05 劉錚 閱讀(414) 評論(0)  編輯  收藏 所屬分類: JavaScript

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          留言簿(1)

          文章分類(141)

          文章檔案(147)

          搜索

          最新評論

          主站蜘蛛池模板: 河东区| 六安市| 龙川县| 会泽县| 舞钢市| 兴义市| 博野县| 建始县| 泊头市| 张家港市| 敦煌市| 滁州市| 苍梧县| 林芝县| 绿春县| 弥勒县| 宝兴县| 西吉县| 内丘县| 珲春市| 隆尧县| 大化| 北京市| 阆中市| 宣城市| 界首市| 特克斯县| 南郑县| 万安县| 苍南县| 长顺县| 集安市| 开阳县| 铁岭市| 梓潼县| 白沙| 南宫市| 缙云县| 石台县| 桓台县| 隆回县|