设置上下文的不同方式
Different ways to set context?
设置上下文有两种方法:
$.proxy(function() {
this.doStuff();
}, this);
…
var that = this;
that.doStuff();
是否有理由使用其中一个而不使用另一个?
第二种方法是纯javascript。
第一个依赖于一个框架(在你的例子中是jQuery)。
没有人比别人好。
我更喜欢使用bind
this.ans = 42;
this.fun = function() { alert(this.ans) };
var binded_fun = this.fun.bind(this);
binded_fun() // 42
也可以使用bind来进行转换,例如:
var sum = function(a, b) { return a + b };
var add5 = sum.bind(this, 5);
alert(add5(3)) // 8
bind函数作为原生代码存在于现代浏览器中,并且比jQuery更快。代理http://jsperf.com/bind-vs-jquery-proxy
在旧的浏览器中可以实现https://developer.mozilla.org/ru/docs/JavaScript/Reference/Global_Objects/Function/bind
相关文章:
- 将函数的上下文应用于javascript变量
- 为什么这在IE中的工作方式与在Firefox中不同
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 使用JQuery的动态上下文菜单
- 使用javascript存储变量的最安全方式
- 以可优化的方式使用requirejs加载模板
- 在Highcharts中,我们可以通过任何方式在渲染图表之前获得plotWidth和plotHeight
- 任何方式使AJAX调用Gmail API,而无需通过JS库
- 如何访问UIWebView'的子窗口上下文
- 为react组件传递道具的最佳方式
- 让Webpack管理Quirky AMD定义的最佳方式
- 在承诺链中处理早期回报的最佳方式
- 如何“;过滤器”;或者以其他方式重构该数据
- Promise中处理上下文的正确方式
- 在setTimeout上使用.apply或.call——如何以跨平台的方式获得这个上下文
- 事件——为什么上下文以两种不同的方式存储
- 设置上下文的不同方式