前面有一篇提到了 匿名函数的多种调用方式。这篇看看具名函数的多种调用方式。
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,['我被调用了'])
虽然call,apply可以纯粹的用来调用/执行函数,但它们更多是用来改变函数执行的上下文。
4、new (不推荐使用这种方式哦 )
// 无参函数fun1 function fun1() { alert('我被调用了'); } new fun1(); // 有参函数fun2 function fun2(param) { alert(param); } new fun2('我被调用了')
new的本质是用来创建/构造一个类的实例,这里定义的fun1,fun2明显不是一个类(没有this,没有prototype)。但两个函数确实执行了。这是new的副作用。
从以上调用方式上看四种方式执行结果没有区别。但如果函数有返回值的话,用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中5种调用函数的方法,包括了JavaScript中5种调用函数的方法的使用技巧和注意事项,需要的朋友参考一下 这篇文章详细的介绍了Javascript中各种函数调用的方法及其原理,对于理解JavaScript的函数有很大的帮助! JavaScript,调用函数的5种方法 一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正理解Javascri
本文向大家介绍js匿名函数的调用示例(形式多种多样),包括了js匿名函数的调用示例(形式多种多样)的使用技巧和注意事项,需要的朋友参考一下 匿名函数就是没有实际名字的函数。 javaScript的匿名函数形式多样,而且不搞清楚,容易看晕代码。 以下是成功调用的匿名函数: 使用匿名函数也要注意经常犯的错误: 另外要注意理解小括号的作用。 小括号能把我们的表达式组合分块,并且每一块,也就是每一对小括号
本文向大家介绍Javascript中匿名函数的调用与写法实例详解(多种),包括了Javascript中匿名函数的调用与写法实例详解(多种)的使用技巧和注意事项,需要的朋友参考一下 Javascript中定义函数的方式有多种,函数直接量就是其中一种。如var fun = function(){},这里function如果不赋值给fun那么它就是一个匿名函数。好,看看匿名函数的如何被调用。 方式1,调
本文向大家介绍JavaScript中匿名函数的递归调用,包括了JavaScript中匿名函数的递归调用的使用技巧和注意事项,需要的朋友参考一下 不管是什么编程语言,相信稍微写过几行代码的同学,对递归都不会陌生。 以一个简单的阶乘计算为例: 我们可以看出,递归就是在函数内部调用对自身的调用。 那么问题来了,我们知道在Javascript中,有一类函数叫做匿名函数,没有名称,怎么调用呢?当然你可以说,
本文向大家介绍javascript异步编程的六种方式总结,包括了javascript异步编程的六种方式总结的使用技巧和注意事项,需要的朋友参考一下 异步编程 众所周知 JavaScript 是单线程工作,也就是只有一个脚本执行完成后才能执行下一个脚本,两个脚本不能同时执行,如果某个脚本耗时很长,后面的脚本都必须排队等着,会拖延整个程序的执行。那么如何让程序像人类一样可以多线程工作呢?以下为几种异步
这样的函数怎么实现。 这样操作需要 new Sint(1,2) ,有什么办法可以实现直接 Sint(1,2).j(10) 输出结果吗?