Learning JavaScript with MDN (call, apply, bind)

call, apply, bind

Object.prototype.toString()

检测 js 数据类型

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString

Object.prototype.toString({})
// "[object Object]"
Object.prototype.toString([])
// "[object Object]"
Object.prototype.toString(Symbol())
// "[object Object]"
Object.prototype.toString(BigInt(1n))
// "[object Object]"

call, apply, bind

相同点: call, apply, bind 都是改变 this 的指向!

不同点:

  1. call 会立即执行, 参数列表(arg1, arg2, arg3, ...)

Object.prototype.toString.call([]);
// "[object Array]"
Object.prototype.toString.call(Symbol());
// "[object Symbol]"
Object.prototype.toString.call(BigInt(1n));
// "[object BigInt]"
  1. apply 会立即执行,参数数组 ([arg1, arg2, arg3, ...])

Object.prototype.toString.apply([]);
// "[object Array]"
Object.prototype.toString.apply(Symbol());
// "[object Symbol]"
Object.prototype.toString.apply(BigInt(1n));
// "[object BigInt]"
  1. bind 不会立即执行, 需要手动调用

Object.prototype.toString.bind([]);
// ƒ toString() { [native code] }
Object.prototype.toString.bind([])();
"[object Array]"
// "[object Array]"
Object.prototype.toString.bind(Symbol());
// ƒ toString() { [native code] }
Object.prototype.toString.bind(Symbol())();
// "[object Symbol]"
Object.prototype.toString.bind(BigInt(1n));
// ƒ toString() { [native code] }
Object.prototype.toString.bind(BigInt(1n))();
// "[object BigInt]"

refs

https://www.cnblogs.com/xgqfrms/p/9209381.html

https://www.cnblogs.com/xgqfrms/p/13019790.html

https://stackoverflow.com/questions/15455009/javascript-call-apply-vs-bind



xgqfrms 2012-2020

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


最新文章

  1. [LeetCode] “全排列”问题系列(二) - 基于全排列本身的问题,例题: Next Permutation , Permutation Sequence
  2. 怎么在logcat中显示system.com.print中的打印信息
  3. POJ 2236 Wireless Network (并查集)
  4. Qt入门(9)——Qt中的线程支持
  5. txt文件导入mysql--转
  6. 尺度空间(Scale space)理论
  7. poj 2992 Divisors 整数分解
  8. Delphi中register, pascal, cdecl, stdcall, safecall(转)
  9. 【转】控制台,终端,tty,shell等概念的区别
  10. [js高手之路]node js系列课程-创建简易web服务器与文件读写
  11. mongodb副本集配置
  12. 安装lamp代码
  13. epoll 实现回射服务器
  14. STM32之使用库函数驱动LED灯
  15. TIMO后台管理系统-基于SpringBoot开发
  16. 使用@JsonView注解控制返回的Json属性
  17. Android之listview添加数据篇
  18. 一个ipv4到ipv6的移植问题
  19. PC平台在Unity3D中播放硬盘ogg,mp3,wav文件
  20. Sass编译时Invalid US-ASCII character解决办法

热门文章

  1. Mysql四种通信协议(linux下本地连接的都是socket 其他都是tcp)
  2. (转载)微软数据挖掘算法:Microsoft 神经网络分析算法(10)
  3. 两个list<Map<String,String>>放入一个list中
  4. TCP/IP网络中的显式拥塞通告(ECN)
  5. Redis集群数据没法拆分时的搭建策略
  6. Box Model 盒子模型
  7. Java 跨域 Json字符转类对象
  8. MySQL 数据库性能调优
  9. Java获取类路径的方式
  10. js将金额转成大写金额