JavaScript函数,事实上是对象,他们均有两个亲儿子(非继承而来的方法),它们就是call()和apply()。 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()); // 0console.log(getAge.call(zhangsan)); // 18console.log(add.apply(zhangsan,[2,3])); // 5