共同点
改变函数执行时的上下文
调用 call 和 apply 的对象,必须是一个函数
call
Function.call(obj, param1, param2, …, paramN)
注意点:
- 调用 call,必须是函数
- call 第一个参数是一个对象,function 的调用者,this 指向这个对象,不传默认为 window
- 第二个参数开始,接收任意个参数,每个参数映射到 function 参数
1 | function func (x, y, z) { |
apply
Function.apply(obj, [argArray])
注意点:
1.调用 apply,必须是函数,只接受两个参数
2.第一个参数同 call
3.第二个参数必须是数组
1 | function print(a, b){ |
类数组
1 | let arrayLike = { |
特征:
具备和数组特征类似的对象
可以索引取值,赋值
可以遍历
具有 length 属性
无法使用forEach、splice、push等数组原型链上的方法
call、apply 用途
call
对象继承
借用方法apply
Math.max
实现两个数组合并
bind
1 | function add (a, b) { |
bind 返回的是函数,需要再次调用才能执行