javascript中函數(shù)的深入理解

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

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

            這段語句將產(chǎn)生func未定義的錯(cuò)誤,而:


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

            則能夠正確執(zhí)行,下面的語句也能正確執(zhí)行:


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

          認(rèn)識(shí)函數(shù)對(duì)象(Function Object)

            可以用function關(guān)鍵字定義一個(gè)函數(shù),并為每個(gè)函數(shù)指定一個(gè)函數(shù)名,通過函數(shù)名來進(jìn)行調(diào)用。在JavaScript解釋執(zhí)行時(shí),函數(shù)都是被維護(hù)為一個(gè)對(duì)象,這就是要介紹的函數(shù)對(duì)象(Function Object)。

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



          JavaScript為函數(shù)對(duì)象定義了兩個(gè)方法:apply和call,它們的作用都是將函數(shù)綁定到另外一個(gè)對(duì)象上去運(yùn)行,兩者僅在定義參數(shù)的方式有所區(qū)別:

          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 劉錚 閱讀(412) 評(píng)論(0)  編輯  收藏 所屬分類: JavaScript

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          留言簿(1)

          文章分類(141)

          文章檔案(147)

          搜索

          最新評(píng)論

          主站蜘蛛池模板: 新昌县| 浦江县| 惠州市| 怀化市| 特克斯县| 吴江市| 大兴区| 常德市| 盐城市| 吉木乃县| 四子王旗| 白玉县| 玉龙| 萝北县| 从江县| 临安市| 阿拉善右旗| 阿克苏市| 灵丘县| 嘉定区| 兴安盟| 界首市| 龙井市| 原阳县| 枣阳市| 沂水县| 永善县| 长沙市| 巫溪县| 偃师市| 旌德县| 明星| 新安县| 大厂| 吉林市| 潜江市| 行唐县| 南平市| 桐柏县| 九龙城区| 商城县|