javascript 具名函數(shù)的四種調(diào)用方式 推薦第1/3頁
更新時間:2009年07月05日 01:06:45 作者:
看四種方式執(zhí)行結(jié)果沒有區(qū)別。但如果函數(shù)有返回值的話,用new方式調(diào)用時可能會讓你有些失望。
1、()小括號運算符 平時最常用的就是()運算符來調(diào)用一個函數(shù)
//無參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
fun1()
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
fun2('我被調(diào)用了')
ECMAScript3后加入給Function加入了call和apply后,就有了下面兩種
2、call
//無參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
fun1.call(null);
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
fun2.call(null,'我被調(diào)用了')
3、apply
//無參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
fun1.apply(null);
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
fun2.apply(null,['我被調(diào)用了'])
4、new (不推薦使用這種方式哦 )
//無參函數(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é)果沒有區(qū)別。但如果函數(shù)有返回值的話,用new方式調(diào)用時可能會讓你有些失望。
//有返回值的函數(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ù)時。如果存在返回值,當返回值是javascript的內(nèi)置類型(基本類型)如字符串(String),數(shù)字(Number),布爾(Boolean)等時,將不會返回該值;當返回值是對象,函數(shù),數(shù)組等對象類型時,將返回該對象,函數(shù),數(shù)組。
當返回值是內(nèi)置類型(基本類型)時,new fun()到底返回什么呢?下一篇將討論new方式調(diào)用的細節(jié)。
復制代碼 代碼如下:
//無參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
fun1()
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
fun2('我被調(diào)用了')
ECMAScript3后加入給Function加入了call和apply后,就有了下面兩種
2、call
復制代碼 代碼如下:
//無參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
fun1.call(null);
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
fun2.call(null,'我被調(diào)用了')
3、apply
復制代碼 代碼如下:
//無參函數(shù)fun1
function fun1() {
alert('我被調(diào)用了');
}
fun1.apply(null);
//有參函數(shù)fun2
function fun2(param) {
alert(param);
}
fun2.apply(null,['我被調(diào)用了'])
4、new (不推薦使用這種方式哦 )
復制代碼 代碼如下:
//無參函數(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é)果沒有區(qū)別。但如果函數(shù)有返回值的話,用new方式調(diào)用時可能會讓你有些失望。
復制代碼 代碼如下:
//有返回值的函數(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ù)時。如果存在返回值,當返回值是javascript的內(nèi)置類型(基本類型)如字符串(String),數(shù)字(Number),布爾(Boolean)等時,將不會返回該值;當返回值是對象,函數(shù),數(shù)組等對象類型時,將返回該對象,函數(shù),數(shù)組。
當返回值是內(nèi)置類型(基本類型)時,new fun()到底返回什么呢?下一篇將討論new方式調(diào)用的細節(jié)。
相關文章
基于bootstrap實現(xiàn)廣告輪播帶圖片和文字效果
這篇文章主要介紹了基于bootstrap實現(xiàn)廣告輪播帶圖片和文字效果,效果非常棒,需要的朋友可以參考下2016-07-07js/jquery解析json和數(shù)組格式的方法詳解
本篇文章主要是對js/jquery解析json和數(shù)組格式的方法進行了詳細的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01