.bind(this) 是按引用传递还是按值传递?

Does .bind(this) pass by reference or by value?

我在某处创建了一个函数并将其绑定到 this 以便我可以使用父块的 this 的含义作为函数内 this 的值。例如:

var foo = function() {
    // some stuff involving other stuff
}.bind(this);

我作为参数传递给bindthis是按引用还是按值传递的?因此,如果我稍后在外部代码块中更改 this 对象的参数,然后调用 foofoo 是否会使用 this 的值我打电话给 bind 的时候,或者我打电话给 foo?

的时候

So if I change the parameters of the this object a bit later in the outer block of code, and afterwards call foo, will foo use the value of this at the time I called bind, or at the time I called foo?

在你调用 foo 的时候。

this 是对对象的 引用。这意味着 Object 可能会在某个时候发生变异,您将获得它的 "fresh - up to date" 个值。

如果您要更改 this 对象的值,那么 foo 将在调用 foo 时获得 this 的新值。

var module = {
  x: 42,
  getX: function () {
    return this.x;
  }
}

var retrieveX = module.getX;
console.log(retrieveX()); // The function gets invoked at the global scope
// expected output: undefined

var boundGetX = retrieveX.bind(module);
module.x = 52;
console.log(boundGetX());