.bind(this)是通过引用还是通过值传递的?

时间:2018-04-14 18:50:45

标签: javascript binding this pass-by-reference pass-by-value

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

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

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

2 个答案:

答案 0 :(得分:6)

  

所以如果我稍后改变这个对象的参数   外部代码块,然后调用foo,将foo使用该值   当我打电话给bind时,还是在我打电话给foo的时候?

当你打电话给foo。

this是对象的引用。这意味着对象可能会在某个时刻发生变异,并且您将获得它的“最新 - 最新”值。

答案 1 :(得分:2)

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

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());