type
status
date
slug
summary
category
password
tags
icon
在 JavaScript 中,函数是“一等公民”,这意味着函数可以像其他变量一样被赋值、传递和操作。函数对象拥有一些强大的方法,其中包括
call
、apply
和 bind
。本文展示如何手写它们的自定义实现。call
call
方法用于调用一个函数,并显式地指定 this
的值以及参数。特殊的地方在于:
- 如果传入的ctx(this)是null或者undefined,this就会变成全局this,node环境和浏览器环境的this是不一样的,但是都有一个globalThis在不同的环境生效。
- 如果传入的ctx不是null或者undefined:
- 如果ctx是原视类型,会转为Object包装对象。
- 如果不是原始类型,则就是它自身。
apply
apply和call的区别就是传入的非this参数变成数组形式,其他没有任何区别。
也可以基于call:
bind
bind
方法创建一个新的函数,在调用时,该函数的 this
值会被设置为 bind
的第一个参数,其余参数将作为新函数的预置参数。
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
- 作者:NotionNext
- 链接:https://lsnx.top/article/call-apply-bind
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。