考虑到类似ES6的代码:
let a = new SomeClass();
let b = new AnotherClass();
let x = a.someMethod.bind(b, 1, 2, 3);
let y = () => a.someMethod.call(b, 1, 2, 3);
x
和y
之间有任何实质性的区别吗?我知道bind()
函数很古老,但现在是否有必要使用它而不是箭头函数呢?至少对我来说,箭头函数语法比
bind()
语法更容易阅读,特别是当this
仍然从词法环境中具有正常含义时,实际上通常可以避免使用call()
。例如,在实践中,bind()
会比箭头函数表现得更好(CPU或RAM方面)吗?
y = (a,b) => a.someMethod.call(b, 1, 2, 3);
。 - ikhvjs.bind()
可以自动处理部分应用,你仍然可以使用另一个函数,但我并不确定你 必须 这样做或者这会更容易。没有必要重新发明轮子。无论如何,重点是,在这种情况下,你所展示的答案与更一般的情况是不同的。 - VLAZsomeMethod
在AnotherClass
上不存在。 - VLAZy = (a,b) => a.someMethod.call(b, 1, 2, 3);
并且它很容易理解,那么在简单情况下不使用() => ...call()
是否有任何原因呢? - Mikko Rantalainenbind()
的一个例子。即使对于这种情况,我发现const addTwo = y => add(2, y);
比const addTwo = add.bind(null, 2);
更容易阅读。 - Mikko Rantalainen