您的位置:首页 > 移动开发

JavaScript中call()与apply()的区别

2016-07-16 00:00 295 查看
摘要: JavaScript中call()与apply()到底有什么区别呢?请看下文

JavaScript函数,事实上是对象,他们均有两个亲儿子(非继承而来的方法),它们就是call()和apply()。

call()和apply()在函数中扮演者什么样的角色呢?

它们俩其实是一对双胞胎,功能是一样一样的,都是在特定的作用域中调用函数,就等于设置函数体中this对象的值。但是,双胞胎也并不是一模一样的,它们也有各自的性格特点嘛。

call()可以传多个参数,第一个参数是一个对象,后面的参数就是该函数的参数。

apply()最多只能传两个参数,第一个参数是一个对象,第二个参数是该函数参数组成的数组,也可以是arguments对象。

举个栗子:

var age = 0;

var zhangsan= {

name: "张三",

age: 18

};

function getAge(){

return this.age;

}

function add(a,b){

this.age = a+b;

return a+b;

}

console.log(getAge());  //  0

console.log(getAge.call(zhangsan));  //  18

console.log(add.apply(zhangsan,[2,3]));   //  5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript apply call