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);
}
}