博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义call, apply,bind
阅读量:4227 次
发布时间:2019-05-26

本文共 694 字,大约阅读时间需要 2 分钟。

参考

但是这篇博文实现bind的逻辑还是有问题的

在这里插入图片描述
框起来的代码是
而且,bind传参应该有两种形式,所以我的实现方式如下:

Function.prototype.myBind = function (context) {
fn = this || window let args = [...arguments].slice(1) console.log(args) if (args.length) {
return function () {
fn.apply(context, args) } } return function () {
fn.apply(context, [...arguments]) }}function hello(age, address) {
console.log(this.name, age, address)}obj = {
name: 'MOT' }hello.myCall(obj, 29, '湖南长沙')hello.myApply(obj, [29, '湖南长沙'])hello.myBind(obj, 29, '湖南长沙')()hello.myBind(obj)(29, '湖南长沙')

看起来非常完美,但是实际上还是有问题

在这里插入图片描述
我们实现的call是无法支持上面的代码的,要怎么解决我现在还不是很清楚,也许我们自己实现的call还有很多漏洞,但是我们还没有发现,一件看起来很简单,其实很难做到完美

转载地址:http://ntdqi.baihongyu.com/

你可能感兴趣的文章
Linux内核中ioremap映射的透彻理解
查看>>
ffs的另外一种实现方法
查看>>
strtol的用法
查看>>
工作队列的使用
查看>>
让vim显示空格,及tab字符 vim 多行注释
查看>>
利用mmc_test.c研究mmc模块
查看>>
tasklet、wait_queue、completion、work_queue用法总结
查看>>
int (*func(int)) (int *,int)
查看>>
在Ubuntu上下载、编译和安装Android最新内核源代码(Linux Kernel
查看>>
Linux内核同步机制API函数:宏:spin_lock_init ( )
查看>>
driver_register 理解
查看>>
copy_from_user && copy_to_user
查看>>
device_register
查看>>
Android上C++对象的自动回收机制分析
查看>>
从spin_lock到spin_lock_irqsave
查看>>
sdio 驱动
查看>>
vim 常用用法
查看>>
更好就足够了吗?| 驱动变革
查看>>
技术选型指南
查看>>
在一家技术公司做媒体
查看>>