回到课程

二次 bind

重要程度: 5

我们可以通过附加的 bind 改变 this 吗?

输出将会是什么?

function f() {
  alert(this.name);
}

f = f.bind( {name: "John"} ).bind( {name: "Ann" } );

f();

答案:John.

function f() {
  alert(this.name);
}

f = f.bind( {name: "John"} ).bind( {name: "Pete"} );

f(); // John

f.bind(...) 返回的外来的 绑定函数 对象仅在创建的时候记忆上下文(如果提供了参数)。

一个函数不能作为重复边界。