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
如果您觉得本文对您有用,可以请作者喝杯咖啡。 如需商务合作请加微信(点击右边链接扫码): RockYang
版权申明 : 本站博文如非注明转载则均属作者原创文章,引用或转载请注明出处,如要商用请联系作者,谢谢。