首页 > 移动平台 > 详细

如何理解和熟练运用js中的call及apply?

时间:2017-12-22 15:45:40      阅读:195      评论:0      收藏:0      [点我收藏+]

在前端开发过程中,我们经常需要改变this指向,通常我们想到的就是用call方法,但是对于call的理解很多人不是很清晰,那么下面小提莫就给大家详细说一说call和apply的详细知识。

call的第一个参数传对象,参数可以是任何类型(包括null)。例:call(obj,arg1,arg2,arg3)

apply第一个参数传对象,参数可以是数组或者arguments对象。例:apply(obj,[arg1,arg2,arg3])

call和apply是为了动态改变this而出现的,当一个object没有某个方法,但是其他的有,我们可以借助call或apply用其它对象的方法来操作。

例如,我们经常会这样定义:

1 function Teemo(){
2 this.gift="mushroom";
3 this.say=function(){
4     console.log("I love "+this.gift);
5   }
6 }
7 var smallTeemo = new Teemo;
8 smallTeemo.say();

但是如果我们有一个对象Heimerdinger= {gift:"battery"},我们不想对它重新定义say方法,那么我们可以通过call或apply用smallTeemo的say方法:smallTeemo.say.call(Heimerdinger);

为了方便记忆:

提莫种蘑菇,大头摆炮台,安妮召唤熊。

有天大头想种蘑菇了

提莫.种蘑菇.call(大头,蘑菇)

大头就能种蘑菇了

提莫调皮了,也想召唤熊

安妮.召唤熊.call(提莫,熊)

就这样记住了。

 

 

如何理解和熟练运用js中的call及apply?

原文:http://www.cnblogs.com/zzqdkf/p/8085838.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!