javascript 具名函数的四种调用方式 推荐第1/3页

 更新时间:2009年07月05日 01:06:45   作者:  
看四种方式执行结果没有区别。但如果函数有返回值的话,用new方式调用时可能会让你有些失望。
1、()小括号运算符 平时最常用的就是()运算符来调用一个函数
复制代码 代码如下:

//无参函数fun1
function fun1() {
alert('我被调用了');
}
fun1()

//有参函数fun2
function fun2(param) {
alert(param);
}
fun2('我被调用了')

ECMAScript3后加入给Function加入了call和apply后,就有了下面两种
2、call
复制代码 代码如下:

//无参函数fun1
function fun1() {
alert('我被调用了');
}
fun1.call(null);

//有参函数fun2
function fun2(param) {
alert(param);
}
fun2.call(null,'我被调用了')

3、apply
复制代码 代码如下:

//无参函数fun1
function fun1() {
alert('我被调用了');
}
fun1.apply(null);

//有参函数fun2
function fun2(param) {
alert(param);
}
fun2.apply(null,['我被调用了'])

4、new (不推荐使用这种方式哦
复制代码 代码如下:

//无参函数fun1
function fun1() {
alert('我被调用了');
}
new fun1();


//有参函数fun2
function fun2(param) {
alert(param);
}
new fun2('我被调用了')

ok,从以上调用方式上看四种方式执行结果没有区别。但如果函数有返回值的话,用new方式调用时可能会让你有些失望。
复制代码 代码如下:

//有返回值的函数fun
function fun() {
alert('我被调用了');
return "jack";
}

var c = new fun();
alert(c);//[object Object],为什么不是"jack"?

改成这样,
复制代码 代码如下:

//有返回值的函数fun
function fun() {
alert('我被调用了');
return {name:'jack'};
}

var c = new fun();
alert(c.name);//jack,又正常返回了

好了,总结下:用new方式调用函数时。如果存在返回值,当返回值是javascript的内置类型(基本类型)如字符串(String),数字(Number),布尔(Boolean)等时,将不会返回该值;当返回值是对象,函数,数组等对象类型时,将返回该对象,函数,数组。

当返回值是内置类型(基本类型)时,new fun()到底返回什么呢?下一篇将讨论new方式调用的细节。

相关文章

  • JavaScript迭代器的含义及用法

    JavaScript迭代器的含义及用法

    这篇文章主要介绍了JavaScript迭代器的含义及用法,迭代器就是为实现对不同集合进行统一遍历操作的一种机制,只要给需要遍历的数据结构部署Iterator接口,通过调用该接口,或者使用消耗该接口的API实现遍历操作。,需要的朋友可以参考下
    2019-06-06
  • 详解基于webpack&gettext的前端多语言方案

    详解基于webpack&gettext的前端多语言方案

    这篇文章主要介绍了详解基于webpack&gettext的前端多语言方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Javascript中replace()小结

    Javascript中replace()小结

    在javascript中,replace方法是属于String对象的,可用于替换字符串。今天我们就来详细探讨下一些replace()方法的使用
    2015-09-09
  • javascript表单验证以及正则表达式举例详解

    javascript表单验证以及正则表达式举例详解

    正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等,常用于表单验证等,下面这篇文章主要给大家介绍了关于javascript表单验证以及正则表达式的相关资料,需要的朋友可以参考下
    2023-05-05
  • 图片上传判断及预览脚本的效果实例

    图片上传判断及预览脚本的效果实例

    这篇文章介绍了图片上传判断及预览脚本的效果实例,有需要的朋友可以参考一下
    2013-08-08
  • IE与FireFox中的childNodes区别

    IE与FireFox中的childNodes区别

    Javascript中,相信大家都试过用getElementsByTagName和childNodes来实现对节点的遍历
    2011-10-10
  • 基于bootstrap实现广告轮播带图片和文字效果

    基于bootstrap实现广告轮播带图片和文字效果

    这篇文章主要介绍了基于bootstrap实现广告轮播带图片和文字效果,效果非常棒,需要的朋友可以参考下
    2016-07-07
  • 用JavaScript做简易的购物车的代码示例

    用JavaScript做简易的购物车的代码示例

    这篇文章主要介绍了用JavaScript做简易的购物车的代码示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • js/jquery解析json和数组格式的方法详解

    js/jquery解析json和数组格式的方法详解

    本篇文章主要是对js/jquery解析json和数组格式的方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • 使用SpreadJS快速清除Excel中工作表保护密码

    使用SpreadJS快速清除Excel中工作表保护密码

    这篇文章主要为大家介绍了使用SpreadJS快速清除Excel中工作表保护密码方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11

最新评论