JavaScript中具名函数的多种调用格局(1)

后边有一篇涉嫌了
匿名函数的有余调用情势。那篇看看具名函数的多种调用情势。

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

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

2、call

从以上调用形式上看四种办法履行结果尚未分别。但万一函数有重临值的话,用new格局调用时或者会让您有些失望。

// 有返回值的函数fun
function fun() {
    alert('我被调用了');
    return {name:'jack'};
}
var c = new fun();
alert(c.name); //jack,又正常返回了

当重临值是放到类型(基本项目)时,new
fun()到底再次回到什么吗?下一篇将研商new格局调用的细节。

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

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

ECMAScript3后加盟给Function参与了call和apply后,就有了下边三种

平常最常用的就是()运算符来调用/执行一个函数

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

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

1、()  

4、new (不引进应用那种办法哦 )

// 有返回值的函数fun
function fun() {
    alert('我被调用了');
    return "jack";
}
var c = new fun();
alert(c);//[object Object],为什么不是"jack"?

计算下:用new方式调用函数时。假设存在重临值,当重回值是JavaScript的放权类型(基本项目)如字符串(String),数字(Number),布尔(Boolean)等时,将不会回到该值;当重回值是目的,函数,数组等对象类型时,将直接回到该目的,函数,数组。

3、apply

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

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

new的昆仑山真面目是用来成立/构造一个类的实例,那里定义的fun1,fun2显明不是一个类(没有this,没有prototype)。但五个函数确实执行了。那是new的副成效。

改成这么

虽说call,apply可以纯粹的用来调用/执行函数,但它们更加多是用来改变函数执行的上下文。