call apply bind
时间: 2023-09-07 12:15:46 浏览: 117
js中的apply、call、bind是三个函数方法,都可以用来改变函数的this指向。
apply和call的作用是一样的,都是改变函数的this指向,并且立即执行该函数。区别在于传入参数的方式不同,apply接收一个数组作为参数,而call则是一个一个参数传入。
bind则是返回一个新的函数,改变函数的this指向,但不会立即执行该函数,需要手动调用。
这三个方法在实际开发中经常用到,特别是在处理函数作为参数传递的情况下,可以方便地改变函数的执行环境。
相关问题
call apply bind实现
call、apply和bind都是用来改变函数中的this指向的方法。其中,call和apply可以直接调用函数并传递参数,而bind则返回一个新的函数,需要手动调用。
具体实现方案如下:
- call的实现:
1. 给想要绑定的对象设置一个属性,并将该属性指向需要调用的函数。
2. 使用该对象调用函数,并传递参数。
3. 结束调用后,删除该属性。
- apply的实现:
1. 给想要绑定的对象设置一个属性,并将该属性指向需要调用的函数。
2. 使用该对象调用函数,并传递参数数组。
3. 结束调用后,删除该属性。
- bind的实现:
1. 创建一个新的函数,并将原函数作为其中的属性保存起来。
2. 当新函数被调用时,将之前绑定的对象作为this,并传递参数。
3. 返回新函数供后续调用。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [如何实现call、apply、bind](https://blog.csdn.net/XIAO_A_fighting/article/details/116701887)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [原生JS实现 call apply bind](https://download.csdn.net/download/weixin_38628990/14046564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
call apply bind 区别
call、apply、bind 都是用来改变函数中 this 指向的方法。
call 和 apply 的作用相同,都是使函数调用时的 this 指向第一个参数,并且立即执行该函数,其中唯一的区别在于传参方式不同。call 的参数是逐个列举,而 apply 的参数是以数组的形式传递,即第二个参数是一个数组。
bind 的作用是返回一个新的函数,在该函数被调用时,会将 this 关键字设置为提供的值,并传入原函数的参数以进行调用。区别于 call 和 apply,bind 方法不是立即执行函数,而是返回一个新的函数。
简单来说,call 和 apply 是为了改变函数的上下文环境,而 bind 是为了改变函数的执行方式。
阅读全文