还是不懂apply..

来源:3-9 在ES5中模拟类

hyperse

2020-09-19 01:02:22

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

写回答

3回答

好帮手慕言

2020-09-21

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

http://img.mukewang.com/climg/5f6807a609108f0f07080554.jpg

控制台:

http://img.mukewang.com/climg/5f68081e097f06dc03740158.jpg

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

0

好帮手慕星星

2020-09-19

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

http://img.mukewang.com/climg/5f656494092267f305670327.jpg

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

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

http://img.mukewang.com/climg/5f6564fa09fa2ecf02020032.jpg

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

http://img.mukewang.com/climg/5f65654709cde05002420027.jpg

这样就改变了this的指向。

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

针对提问回复:

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

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

0
hyperse
h 老师举的例子里面apply只有一个参数,视频中var res = fn.apply(_this, args);有两个参数又该怎么理解呢。。
h020-09-20
共1条回复

hyperse

提问者

2020-09-19

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

0

0 学习 · 10739 问题

查看课程