js 改变运行上下文
来源:互联网 发布:邮轮上有网络吗 编辑:程序博客网 时间:2024/06/04 18:47
js 改变运行上下文
在js里面改变运行上下文有如下三个函数:
- call()
- apply()
- bind()
var o1 = { a:"123", b:function(c,d,e){ console.log(this.a); } }, o2 = { a:"321" };
对于上面两个对象,想让o2在不添加方法的情况下,调用o1的b方法:
比如想要输出 321123,我们可以 o1.b.call(o2,1,2,3); o1.b.apply(o2,[1,2,3]); o1.b.bind(o2,1,2,3)(); 对于call和apply两者区别就是在传入函数的参数格式上: 1.call()函数需要将参数一一传入作为参数 2.apply()函数则需要将参数放入一个数组一起传入 3.个人感觉apply这个数组来存储函数参数的形式有点类似python的收集参数的概念 4.对于bind函数我们可以尝试使用apply函数来重现他的功能:Function.prototype.mybind = function(cont){ var _self = this, cont = arguments[0], //存储bind函数收集的参数数组 arg1 = Array.prototype.slice.call(arguments).splice(0,1); return function(){ //存储bind函数返回的函数 执行时传入的参数数组 var arg2 = Array.prototype.slice.call(arguments), //将两次的参数数组合并 arg = arg1.concat(arg2); //调用apply方法改变方法执行的上下文并传入参数数组 _self.apply(cont,arg); };};
阅读全文
0 0
- js 改变运行上下文
- js运行上下文
- 改变上下文
- 37、改变上下文
- nodejs改变上下文
- 永久改变SELINUX安全上下文
- JS运行过程,作用域和上下文的作用,自执行函数
- js获取上下文路径
- 【JS】执行上下文(ExcecutionContext)
- js获取上下文
- js执行上下文
- js ES3执行上下文
- js 执行上下文环境
- JS - 执行上下文栈
- JS中的上下文this
- js执行上下文
- js 中的执行上下文
- Js 执行上下文
- 声明与定义的区别
- neo4j 大量数据的批量导入
- FPGA流水线技术原理与实例
- 侧边框
- linux网桥处理函数学习-----br_handle_frame
- js 改变运行上下文
- 前端_购物车选择多选少选
- 86标准SQL与92标准SQL用法区别
- 5.Struts2_Action 概述
- C语言基础知识学习(变量的储存类型)
- 【bzoj 2431】逆序对数列(DP)
- angularjs指令之间的数据交互
- Spark由浅到深(1)--安装,测试,问题排错
- 设计模式学习资源