关于call和apply中,第一个参数指向问题
在13:25秒左右,an.showName.call(c,',');
视频中老师说,animal里的showName方法就交给cat去使用是什么意思,
我目前记住的方法,就是XX.call(a,b),a是谁,那么XX里this就是谁。
难道老师的意思是,当使用an.showName.call(c,',')后,可以临时看做 c 指向的函数为
function cat(){
this.name = 'cat';
this.showName = function(){
alert(this.name);
}
}
内部有一个animal的showName方法,这样showName里的this指向的就是c了,然后再调用c.showName(',);?
正在回答
同学你好,call,apply第一个参数的理解是对的。但是老师说的也没有错,就是通俗形象的给大家解释了一下,an是animal的实例化对象,所以an有name属性和showName方法。c是cat的实例化对象,它只有name属性。
调用an.showName()时,弹出“ani”。但是调用c.showName()时,就会报错。我们想要弹出“cat”,但是没有showName方法,所以就要和an去借这个方法。call就是帮助c去借an的showName方法。即调用an.showName时,让里面的this指向c。这样执行showName时,弹出的就是“cat”。所以不要太纠结这里哦~
另外,第二个参数是给方法内部传递使用的。代码中,showName中没有定义形参,这里我们可以去定义一下:
这个参数并不影响老师的解释,可以理解为,c去借用an的showName时,传入了c想要使用的实参。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星