还是不懂apply..

还是不懂apply..

看了好几遍其他问答中的答案,总感觉没有懂透,可以麻烦老师用更通俗一点的说法讲一下这个方法吗?谢谢!

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕言 2020-09-21 09:55:43

同学你好,第二个参数是以数组的形式传入的,例如在调用的时候,传递数字1,如下:

http://img1.sycdn.imooc.com//climg/5f6807a609108f0f07080554.jpg

控制台:

http://img1.sycdn.imooc.com//climg/5f68081e097f06dc03740158.jpg

同学可以动手敲一下例子,印象会更深刻。祝学习愉快~

好帮手慕星星 2020-09-19 10:00:37

同学你好,可以参考下面的例子进行理解

http://img1.sycdn.imooc.com//climg/5f656494092267f305670327.jpg

有两个对象obj1和obj2,分别都有name属性和say方法,say方法中输出name的值。

第一次调用obj2.say(),那么输出的是

http://img1.sycdn.imooc.com//climg/5f6564fa09fa2ecf02020032.jpg

第二次调用使用了apply方法,会改变this的指向,原本this指向的是obj2,因为是obj2调用的,现在对象改为了obj1,也就是obj1调用的,输出的是

http://img1.sycdn.imooc.com//climg/5f65654709cde05002420027.jpg

这样就改变了this的指向。

上面讲解的apply方法的第一个参数,如果需要传入内容,那么第二个参数需要是数组。

针对提问回复:

fn函数是window对象调用的,所以this指向的是window ,然后使用apply方法,改变this指向创建的Person 对象。

自己再理解下,祝学习愉快!

  • 提问者 hyperse #1
    老师举的例子里面apply只有一个参数,视频中var res = fn.apply(_this, args);有两个参数又该怎么理解呢。。
    2020-09-20 22:29:22
提问者 hyperse 2020-09-19 01:05:03

还有一个疑问就是为什么说一开始this是指向window的呢,

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师