绑定返回的结果和使用function()的结果之间有什么区别
What is the difference between the return from bind and the result of using function()
bind的返回值和通过function()创建等价项的结果之间有什么区别?有什么有效的区别吗?(我不是在问bind
的上下文保留属性)。是否有任何技术/性能方面的原因使您可能更喜欢一种方法。
即
var myFunc = foo.bind(undefined, bar);
与
var myFunc = function() { foo.call(undefined, bar) };
有什么有效的区别吗?
你可能更喜欢它,有什么技术/性能方面的原因吗方法
第二个版本包括一个额外的函数调用。
没有技术差异,但有性能和无缺陷的差异。function.prototype中的所有函数都是由一些最好的开发人员编写的,以遵循所有程序员所期望的特定规范。当然,经过了很好的测试。
最好不要重新发明轮子,而且这个开发人员将比我们做得更好。
注意1:I8现在低于使用量的0.3%,所以如果它不支持绑定,请不要介意。在你的网站上有很多不支持很多东西的机会。
注2:在chrome中绑定的实现是这样的:
在chrome中的开发控制台中写入:Function.prototype.bind
结果你得到了这个
function(e,t){var n=this;return null!=t&&(t=Array.from(t)),function(){return n.apply(e,t||arguments)}}
额外的好处:这里有一个非常类似的实现,用于更干净的代码(复制Prototype.js中的.bind方法):
Function.prototype.bind = function(){
var fn = this, args = Array.prototype.slice.call(arguments),
object = args.shift();
return function(){
return fn.apply(object,
args.concat(Array.prototype.slice.call(arguments)));
};
};
#bind
在IE8中不工作。因此,在这种情况下,您可以使用第二个示例=),但最好像这里那样实现#bind
相关文章:
- 绑定返回的结果和使用function()的结果之间有什么区别
- 如何在字符之间进行匹配,但不将它们包含在结果中
- 检查所选值之间的值,结果不正确
- (html) Google 地图搜索结果与 Maps/地点 API 调用之间的差异(结果较少)
- Jasmine 测试在测试运行中、Firefox/Chrome 之间以及检查器开/关时的结果不一致
- Google Geocoder 在 url 和 javascript 请求之间有不同的结果
- 了解两个代码解决方案之间的结果差异
- 如何在页面之间保存 AJAX 查询的结果
- Sails-mongo在两个日期之间得到结果
- 角度如何在搜索和结果视图之间切换并传递数据
- Javascript 日期在 Internet Explorer 和 Chrome 之间有不同的结果
- Javascript中这些日期之间的区别?为什么不是所有的浏览器都给出相同的结果
- 在页面之间传递变量,并在 asp.net 中基于它获得结果
- 如何计算两个日期之间的天数,并在php中的文本框中显示结果
- 在ng-bind-html中的结果之间添加一个空格
- 使用jquery的结果之间有什么区别
- 为什么这种排序算法会在浏览器之间产生不一致的结果
- 日期上toJSON()的结果在IE8和IE9+之间不同
- 这将在浏览器之间返回不同的结果
- AJAX-显示AJAX结果之间的延迟时间