请问这33行 为什么是fn.apply,怎么理解

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

敲代码时长两年半的练习生

2019-10-11 19:09:25

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

写回答

1回答

好帮手慕慕子

2019-10-12

同学你好,首先, 我们要明白apply方法作用是什么? apply方法接收两个参数, 示例:fn.apply(obj, args)其中第一个参数表示fn函数内部的this指向的对象, 第二个参数是传入fn函数的参数哦。

然后, 我们再来理解, 这里使用apply主要是为了改变函数的内部this指向问题哦。

老师这里举个对比的示例帮助同学更好的理解

在Person中打印this,查看输出的值

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

  1. 不使用apply的方法, 直接使用fn函数

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

    然后打印Person中的this, 如下图所示, 因为Person函数是在全局下声明的, 所以此时内部的this是指向全部变量window

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

  2. 使用apply方法的改变函数内部的this指向

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

    打印结果

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

同学可以自己下去测试一下, 结合代码实现的效果帮助自己更好的理解哦

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~~

1

0 学习 · 10739 问题

查看课程