我在某处创建了一个函数,并将其绑定到this
,以便我可以使用父块的this
含义作为函数中this
的值。例如:
var foo = function() {
// some stuff involving other stuff
}.bind(this);
this
我作为参数传递给bind
通过引用或值传递吗?因此,如果稍后在外部代码块中更改this
对象的参数,然后调用foo
,foo
将使用this
的值我打电话给bind
时,还是当我打电话给foo
时?
答案 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());