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