JavaScript模拟call和apply的实现
参考: 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的实现相关推荐
- Javascript模拟c#中arraylist操作(学习分享)
最近在看javascript,在<javascript高级编程>中也学到了不少东西.但是在这里要感谢博客园的"汤姆大叔" 的无私奉献,他的关于javascript相关博 ...
- JavaScript的call,apply和bind方法之间的区别
by Rajat Saxena 通过拉贾特·萨克森纳(Rajat Saxena) JavaScript的call,apply和bind方法之间的区别 (The difference between J ...
- javascript中call和apply的区别
我理解javascript中call和apply的区别仅在于语法不同. 下例中分别调用call和apply对myObj进行修改,语法不同,但使用效果是一样的: var myObj = { " ...
- JavaScript中的call,apply,bind学习总结
JavaScript 中的 call, apply, bind 这三个函数的作用和区别在各大论坛都被讨论了很多次了,但是我一直都还没来得及好好总结,这次正好看到了一个很不错的关于JavaScript ...
- 模拟运行php,window_PHP+Javascript模拟Matrix画面, 直接存为*.php文件运行即 - phpStudy...
PHP+Javascript模拟Matrix画面 直接存为*.php文件运行即可. $color_back="#000000"; $number_w=8; $number_h=6; ...
- JavaScript中call、apply个人理解
JavaScript中call.apply个人理解 一句话即通俗的说:call.apply 是为了改变this的状态而存在的 var lisi = {name:'李四',age:23};var zs ...
- [小笔记]TypeScript/JavaScript模拟Python中的Range函数
[小笔记]TypeScript/JavaScript 模拟Python中的Range函数 李俊才/CSDN博客 CSDN用户名:jcLee95 邮箱:291148484@163.com 原创不易,感谢 ...
- 【JavaScript】JavaScript模拟实现面向对象一张图帮助你深刻理解原型链和原型对象
文章目录 一.JavaScript模拟面向对象 1.函数是类 2.函数中各种变量的声明 3.关于函数内的this 小结:JavaScript中函数是什么? 4.练习:面向对象思想编写Complex类 ...
- JavaScript模拟实现先进先出、先进后出效果
JavaScript模拟实现先进先出.先进后出效果 JavaScript模拟实现先进先出.先进后出效果
最新文章
- python生成指定长度的列表_python – 如何将列表或字符串解析为固定长度的块
- 中兴服务器raid配置_-服务器Raid卡更换后如何恢复硬盘Raid组信息
- 一本很好的书LearnOpenGL
- easyui combobox开启搜索自动完成功能
- vscode中experimentaldecorators报错
- 类视图ListView和DetailView比较
- Java链表的常用算法原理
- 求三点外接圆圆心公式
- python码合并txt文件
- 本机号码校验不只是免输密码、免输短信验证码
- 电脑开机黑屏一串英文_【电脑开机后进不了系统显示英文】电脑开机一直显示英文_电脑开机进不了系统...
- 已解决SyntaxError:expected ‘:‘
- 激活函数(Relu,sigmoid,Tanh,softmax)详解
- 基于QT实现的简单版控制台植物大战僵尸
- centos7 vi保存退出_linux vi保存退出命令 (如何退出vi)
- 当int类型超出了[-2147483648,2147483647]会发生什么?
- 为什么VDI对核心UNIX®和Linux®工程应用有意义
- VBA,如何使用类msgbox的效果,但是让窗口过几秒自动关闭? (未完成)
- 微信小程序开发初学:按钮 - button
- gdal处理tiff文件的小问题
热门文章
- 数据挖掘算法之离散化和二元化
- mysql rtree_优化体系--MySQL 索引优化(full-text、btree、hash、rtree)
- oracle下载配置文件,oracle 11G、12C BBED 配置和库文件下载!
- KubeEdge temperature 部署
- 【java】java 并发编程 Condition 源码分析
- 【算法】斐波那契(黄金分割法) 查找算法
- 【Elasticsearch】官方Elasticsearch Java客户端的状态
- 【Linux】Linux 生成证书 keytool 命令找不到
- 【Kafka】Kafka SCRAM认证 ERROR [ZooKeeperClient] Auth failed
- 【redis】mac安装redis