大家好,欢迎来到IT知识分享网。
一直都知道call和apply,用的真的很少,今天想起来了,就随便说说吧
1:基本用法
看到call和apply,大家想到的应该都是一句话 改变对象执行的上下文
2:apply和call的用法
其实call和apply的用意简单来说都一样,就是改变this 的指向
这也是他们的相同点
下面看一个具体的demo
var person = {
name: ‘xiao ming’,
age: 18,
who: function () {
console.log( ‘my name is ‘ + this.name + ‘ , ‘ + this.age + ‘ years old’ );
console.log( person === this);
}
}
person.who();
name: ‘xiao ming’,
age: 18,
who: function () {
console.log( ‘my name is ‘ + this.name + ‘ , ‘ + this.age + ‘ years old’ );
console.log( person === this);
}
}
person.who();
person.who.apply({name:’123′,age:15});
person.who.call({name:’123′,age:15});
person.who.call({name:’123′})
这样person的指向就改变了
3:apply和call的不同
先看下apply和call 的用法
call
function.call(obj[,arg1[, arg2[, [,.argN]]]]])
apply
function.apply(obj[,argArray])
可以看出,它们里面传入的参数不同。
那到底什么时候该用apply,什么时候用call呢
根据你要传入的参数来做选择,不需要传参或者只有1个参数的时候,用call
,当要传入多个对象时,用apply
4:apply和call其他用法
function superClass () {
this.a = 1;
this.print = function () {
console.log(this.a);
}
}
function subClass () {
superClass.call(this);
this.print();
}
用call实现继承,subClass通过call实现对superClass 的继承。
本文参考:https://www.jianshu.com/p/131ce0390cf8
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/11157.html