我最近用 javascript 编写了很多代码,并且使用 Prototype.js 来帮助完成很多样板文件,只是绑定(bind)方法就非常值得了,因为我喜欢使用闭包而不是对象来执行操作繁重的工作。很难放弃使用 ruby block 养成的习惯。所以这是我的问题:之间是否有任何特定的性能差异
var func = some_func.bind(this);
...
func();
和
var that = this;
...
some_func(); // we just rename 'this' everywhere inside some_func to 'that'
这些技巧是必需的,因为内部函数默认使用全局上下文而不是外部函数的上下文。特别是哪个版本让事情变得更加“平坦”。如果涉及递归,那么绑定(bind)版本将变得缓慢,因为绑定(bind)将不断折叠函数内部的函数,直到不可能展开事物为止,至少我认为这就是发生的情况。第二个版本有同样的问题吗?
最佳答案
除非您快速运行该操作数千次,否则性能差异实际上可以忽略不计。所以我通常会选择绑定(bind),因为它可以使代码更干净、更不易出现错误。
关于javascript - 创建闭包和 some_func.bind(this) 之间的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4094585/