使用 call() 的显式绑定在 Javascript 中如何工作?
How does the explicit binding using call() works in Javascript?
如果在call()中传递null或者什么都不传递,是否会被认为是隐式绑定?
以下代码的输出应该是什么?不应该是2吗?我得到 'undefined'.
function foo() {
console.log( this.a );
}
var a = 2;
foo.call( null ); // 2
这是一个隐式绑定,您可以使用 console.log(this);
进行检查。它打印全局对象。因此,当 运行 在我的浏览器中时,您的代码会打印 2
.
但是,这样的var a = 2;
语句works differently in Node.js:它并没有创建一个属性的全局对象。所以 this.a
尝试访问一个不存在的成员,结果是 undefined
.
如果在call()中传递null或者什么都不传递,是否会被认为是隐式绑定? 以下代码的输出应该是什么?不应该是2吗?我得到 'undefined'.
function foo() {
console.log( this.a );
}
var a = 2;
foo.call( null ); // 2
这是一个隐式绑定,您可以使用 console.log(this);
进行检查。它打印全局对象。因此,当 运行 在我的浏览器中时,您的代码会打印 2
.
但是,这样的var a = 2;
语句works differently in Node.js:它并没有创建一个属性的全局对象。所以 this.a
尝试访问一个不存在的成员,结果是 undefined
.