首先, this 指针只存在于函数 (function) 中. 用于指向一个对象
this 在不同函数中有 3 种代表方式:
普通函数中: 代表 Windows 对象
构造函数中: 代表 new 出来的对象
对象方法中: 代表调用该方法的对象
改变对象 this 指向的 3 个方法:
call: 改变函数 this 指向
不传 / null/undefined 时, this 都表示 Windows
传对象, this 代表该对象
传函数, this 代表该函数
说明: 除了, 不传 / null/undefined, 代表 Windows. 其他的传什么, 就代表什么.
call: 可以让 b 函数调用 a 的属性和方法.
让 this 代表 a. 可传 2 参.
apply: 将数组元素分别付给函数的参数
传个数组, 分别赋给 x,y,z:call 就不分别了.
bind: 绑定事件期间改变 this 指向
F 的 this 指向 obj,this.a 就代表 obj.a=1, 点击网页时, 执行 F 函数
call 实现继承:
A 是构造函数, B 使用 call, 就可以继承于 A.
使 B 对象可以使用 A 的属性和方法.
call 实现移花接木: 数组方法用到类数组中
arguments 是类数组
test 函数获得所有传参后, 在 call 回调中进行处理
额外学习: 给内置函数新增方法.
获取数组的最大值实现
来源: https://www.cnblogs.com/wuhairui/p/10733586.html