javascript 具名函數(shù)的四種調(diào)用方式 推薦第1/3頁(yè)
更新時(shí)間:2009年07月05日 01:06:45 作者:
看四種方式執(zhí)行結(jié)果沒(méi)有區(qū)別。但如果函數(shù)有返回值的話,用new方式調(diào)用時(shí)可能會(huì)讓你有些失望。
1、()小括號(hào)運(yùn)算符 平時(shí)最常用的就是()運(yùn)算符來(lái)調(diào)用一個(gè)函數(shù)
//無(wú)參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
fun1()
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
fun2('我被調(diào)用了')
ECMAScript3后加入給Function加入了call和apply后,就有了下面兩種
2、call
//無(wú)參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
fun1.call(null);
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
fun2.call(null,'我被調(diào)用了')
3、apply
//無(wú)參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
fun1.apply(null);
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
fun2.apply(null,['我被調(diào)用了'])
4、new (不推薦使用這種方式哦 )
//無(wú)參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
new fun1();
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
new fun2('我被調(diào)用了')
ok,從以上調(diào)用方式上看四種方式執(zhí)行結(jié)果沒(méi)有區(qū)別。但如果函數(shù)有返回值的話,用new方式調(diào)用時(shí)可能會(huì)讓你有些失望。
//有返回值的函數(shù)fun
function fun() {
alert('我被調(diào)用了');
return "jack";
}
var c = new fun();
alert(c);//[object Object],為什么不是"jack"?
改成這樣,
//有返回值的函數(shù)fun
function fun() {
alert('我被調(diào)用了');
return {name:'jack'};
}
var c = new fun();
alert(c.name);//jack,又正常返回了
好了,總結(jié)下:用new方式調(diào)用函數(shù)時(shí)。如果存在返回值,當(dāng)返回值是javascript的內(nèi)置類型(基本類型)如字符串(String),數(shù)字(Number),布爾(Boolean)等時(shí),將不會(huì)返回該值;當(dāng)返回值是對(duì)象,函數(shù),數(shù)組等對(duì)象類型時(shí),將返回該對(duì)象,函數(shù),數(shù)組。
當(dāng)返回值是內(nèi)置類型(基本類型)時(shí),new fun()到底返回什么呢?下一篇將討論new方式調(diào)用的細(xì)節(jié)。
復(fù)制代碼 代碼如下:
//無(wú)參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
fun1()
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
fun2('我被調(diào)用了')
ECMAScript3后加入給Function加入了call和apply后,就有了下面兩種
2、call
復(fù)制代碼 代碼如下:
//無(wú)參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
fun1.call(null);
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
fun2.call(null,'我被調(diào)用了')
3、apply
復(fù)制代碼 代碼如下:
//無(wú)參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
fun1.apply(null);
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
fun2.apply(null,['我被調(diào)用了'])
4、new (不推薦使用這種方式哦 )
復(fù)制代碼 代碼如下:
//無(wú)參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
new fun1();
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
new fun2('我被調(diào)用了')
ok,從以上調(diào)用方式上看四種方式執(zhí)行結(jié)果沒(méi)有區(qū)別。但如果函數(shù)有返回值的話,用new方式調(diào)用時(shí)可能會(huì)讓你有些失望。
復(fù)制代碼 代碼如下:
//有返回值的函數(shù)fun
function fun() {
alert('我被調(diào)用了');
return "jack";
}
var c = new fun();
alert(c);//[object Object],為什么不是"jack"?
改成這樣,
復(fù)制代碼 代碼如下:
//有返回值的函數(shù)fun
function fun() {
alert('我被調(diào)用了');
return {name:'jack'};
}
var c = new fun();
alert(c.name);//jack,又正常返回了
好了,總結(jié)下:用new方式調(diào)用函數(shù)時(shí)。如果存在返回值,當(dāng)返回值是javascript的內(nèi)置類型(基本類型)如字符串(String),數(shù)字(Number),布爾(Boolean)等時(shí),將不會(huì)返回該值;當(dāng)返回值是對(duì)象,函數(shù),數(shù)組等對(duì)象類型時(shí),將返回該對(duì)象,函數(shù),數(shù)組。
當(dāng)返回值是內(nèi)置類型(基本類型)時(shí),new fun()到底返回什么呢?下一篇將討論new方式調(diào)用的細(xì)節(jié)。
相關(guān)文章
詳解基于webpack&gettext的前端多語(yǔ)言方案
這篇文章主要介紹了詳解基于webpack&gettext的前端多語(yǔ)言方案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
javascript表單驗(yàn)證以及正則表達(dá)式舉例詳解
正則表達(dá)式描述了一種字符串匹配的模式,可以用來(lái)檢查一個(gè)串是否含有某種子串、將匹配的子串替換或者從某個(gè)串中取出符合某個(gè)條件的子串等,常用于表單驗(yàn)證等,下面這篇文章主要給大家介紹了關(guān)于javascript表單驗(yàn)證以及正則表達(dá)式的相關(guān)資料,需要的朋友可以參考下2023-05-05
基于bootstrap實(shí)現(xiàn)廣告輪播帶圖片和文字效果
這篇文章主要介紹了基于bootstrap實(shí)現(xiàn)廣告輪播帶圖片和文字效果,效果非常棒,需要的朋友可以參考下2016-07-07
用JavaScript做簡(jiǎn)易的購(gòu)物車的代碼示例
這篇文章主要介紹了用JavaScript做簡(jiǎn)易的購(gòu)物車的代碼示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
js/jquery解析json和數(shù)組格式的方法詳解
本篇文章主要是對(duì)js/jquery解析json和數(shù)組格式的方法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-01-01
使用SpreadJS快速清除Excel中工作表保護(hù)密碼
這篇文章主要為大家介紹了使用SpreadJS快速清除Excel中工作表保護(hù)密碼方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11

