javascript中call和apply的区别
极客学长 2017-02-21 0
javascript
Javascript
中有2个方法用来调用一个对象的一个方法,但是以另一个对象替换当前对象,也就是替换对象的上下文,更改对象的内部指针,简单来说就是更改this
指向的内容。
这两个方法分别是 call
和 apply
,他们的作用几乎相同,只是在使用的时候有小小的差别。
首先看下这2个函数的原型
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
apply(thisObj, args);
call函数和apply方法的第一个参数都是要传入给当前对象的对象,即函数内部的this。后面的参数都是传递给当前对象的参数。
其实他们的区别就在传参上面:
call的参数必须一个一个传进去,但是apply的参数可以作为一个数组一次性传进去
那么很显然使用apply的好处是可以直接将当前函数的arguments对象作为apply的第二个参数传入。
function Person(name,age) {
console.log(name);
console.log(age);
}
function Teacher(name, age) {
Person.apply(this, arguments);
this.name = name;
this.age = age;
}
function Student(name, age) {
Person.call(this, arguments);
this.name = name;
this.age = age;
}
var t = new Teacher('zhangsan', 30);
var s = new Student('lisi', 10);
//输出
//zhangsan
//30
//{ '0': 'lisi', '1': 10 }
//undefined
本站博文如非注明转载则均属作者原创文章,引用或转载无需申请版权或者注明出处,如需联系作者请加微信: geekmaster01