参考: call和apply的模拟实现

  1. call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.call(A, args1,args2);即A对象调用B对象的方法。

/*call()方法*/
function.call(thisObj[, arg1[, arg2[, [,...argN]]]]);

   2.1 . 举例一说明:

var foo = {value: 1
};
function bar() {console.log(this.value);
}
bar.call(foo); // 1

  备注: 1. bar函数执行了; 2. bar函数中的this指向了foo。

  2.2 对举例一进行改造:

var foo = {value: 1,bar:function () {console.log(this.value);}
};
foo.bar(); // 1

  对于改造的对象,给对象添加了一个属性,这个属性是一个方法,方法指向bar

  总结: 所以我们模拟的步骤可以分为:

1. 将函数设为对象的属性2. 执行该函数3. 删除该函数

  按照举例一,模拟步骤:

// 第一步
foo.fn = bar
// 第二步
foo.fn()
// 第三步
delete foo.fn

  

转载于:https://www.cnblogs.com/yyy6/p/9556084.html

JavaScript模拟call和apply的实现相关推荐

  1. Javascript模拟c#中arraylist操作(学习分享)

    最近在看javascript,在<javascript高级编程>中也学到了不少东西.但是在这里要感谢博客园的"汤姆大叔" 的无私奉献,他的关于javascript相关博 ...

  2. JavaScript的call,apply和bind方法之间的区别

    by Rajat Saxena 通过拉贾特·萨克森纳(Rajat Saxena) JavaScript的call,apply和bind方法之间的区别 (The difference between J ...

  3. javascript中call和apply的区别

    我理解javascript中call和apply的区别仅在于语法不同. 下例中分别调用call和apply对myObj进行修改,语法不同,但使用效果是一样的: var myObj = { " ...

  4. JavaScript中的call,apply,bind学习总结

    JavaScript 中的 call, apply, bind 这三个函数的作用和区别在各大论坛都被讨论了很多次了,但是我一直都还没来得及好好总结,这次正好看到了一个很不错的关于JavaScript ...

  5. 模拟运行php,window_PHP+Javascript模拟Matrix画面, 直接存为*.php文件运行即 - phpStudy...

    PHP+Javascript模拟Matrix画面 直接存为*.php文件运行即可. $color_back="#000000"; $number_w=8; $number_h=6; ...

  6. JavaScript中call、apply个人理解

    JavaScript中call.apply个人理解 一句话即通俗的说:call.apply 是为了改变this的状态而存在的 var lisi = {name:'李四',age:23};var zs ...

  7. [小笔记]TypeScript/JavaScript模拟Python中的Range函数

    [小笔记]TypeScript/JavaScript 模拟Python中的Range函数 李俊才/CSDN博客 CSDN用户名:jcLee95 邮箱:291148484@163.com 原创不易,感谢 ...

  8. 【JavaScript】JavaScript模拟实现面向对象一张图帮助你深刻理解原型链和原型对象

    文章目录 一.JavaScript模拟面向对象 1.函数是类 2.函数中各种变量的声明 3.关于函数内的this 小结:JavaScript中函数是什么? 4.练习:面向对象思想编写Complex类 ...

  9. JavaScript模拟实现先进先出、先进后出效果

    JavaScript模拟实现先进先出.先进后出效果 JavaScript模拟实现先进先出.先进后出效果

最新文章

  1. python生成指定长度的列表_python – 如何将列表或字符串解析为固定长度的块
  2. 中兴服务器raid配置_-服务器Raid卡更换后如何恢复硬盘Raid组信息
  3. 一本很好的书LearnOpenGL
  4. easyui combobox开启搜索自动完成功能
  5. vscode中experimentaldecorators报错
  6. 类视图ListView和DetailView比较
  7. Java链表的常用算法原理
  8. 求三点外接圆圆心公式
  9. python码合并txt文件
  10. 本机号码校验不只是免输密码、免输短信验证码
  11. 电脑开机黑屏一串英文_【电脑开机后进不了系统显示英文】电脑开机一直显示英文_电脑开机进不了系统...
  12. 已解决SyntaxError:expected ‘:‘
  13. 激活函数(Relu,sigmoid,Tanh,softmax)详解
  14. 基于QT实现的简单版控制台植物大战僵尸
  15. centos7 vi保存退出_linux vi保存退出命令 (如何退出vi)
  16. 当int类型超出了[-2147483648,2147483647]会发生什么?
  17. 为什么VDI对核心UNIX®和Linux®工程应用有意义
  18. VBA,如何使用类msgbox的效果,但是让窗口过几秒自动关闭? (未完成)
  19. 微信小程序开发初学:按钮 - button
  20. gdal处理tiff文件的小问题

热门文章

  1. 数据挖掘算法之离散化和二元化
  2. mysql rtree_优化体系--MySQL 索引优化(full-text、btree、hash、rtree)
  3. oracle下载配置文件,oracle 11G、12C BBED 配置和库文件下载!
  4. KubeEdge temperature 部署
  5. 【java】java 并发编程 Condition 源码分析
  6. 【算法】斐波那契(黄金分割法) 查找算法
  7. 【Elasticsearch】官方Elasticsearch Java客户端的状态
  8. 【Linux】Linux 生成证书 keytool 命令找不到
  9. 【Kafka】Kafka SCRAM认证 ERROR [ZooKeeperClient] Auth failed
  10. 【redis】mac安装redis