apply, call , bind
3个都是改变函数内部的this指向(改变函数运行时上下文而存在),它们三个第一个参数都是 this
apply 与 call 区别
1. 虽然它们2个第一个参数都是this,但是apply第二个参数是一个数组的 ,而 call 第二个元素开始是数组里面的元素, 但是会立即执行 (列如)
1. const numbers = [5,481,56,89];
let maxInNumber = Math.max.apply( this, numbers );
let maxInNumber = Math.max.call( this, 5,484,56,89);
bind
它第二参数是接受的参数 列表, 不会去立即执行,返回一个改变上下文this函数的使用 , 原函数的this并没有改变 , 依旧指向全局的window
但是在箭头函数的情况下 apply , call 会失效
原因 1. 箭头函数不可以被当作构造函数, 不可以使用new 这个命令 , 不然会抛出异常
2. 箭头函数不可以使用arguments对象, 这个对象在函数体内是不存在的,如果想要使用Rest参数代替
3. 箭头函数不可以用作Generator函数 , 不可以使用yield命令
4. 箭头函数体内this对象就是定义时的对象 , 而不是使用的时候的对象
相关文章
- 01-18网络游戏逆向分析-3-通过发包函数找功能call
- 01-18【Kotlin篇】差异化分析,let,run,with,apply及also
- 01-18关于socket通信bind()返回值错误:10049
- 01-18npm install 安装报错,Unhandled rejection RangeError: Maximum call stack size exceeded
- 01-18vue报错Error in v-on handler: "RangeError: Maximum call stack size exceeded"
- 01-18RocketMQ远程连接报错 sendDefaultImpl call timeout
- 01-18Error starting userland proxy: listen tcp4 0.0.0.0:8005: bind: address alrea
- 01-18bind使用场景
- 01-18python __init__ __call__
- 01-18spring.ftl的bind宏中调用的springMacroRequestContext是什么?