我对 JavaScript 有点陌生,所以刚刚学习“this”指针,我尝试使用 apply() 来更改对象的上下文,我在 NodeJS REPL 中运行代码,输出未定义,未定义。
var word="Hello";
var obj={word:"GB"};
function foo(){return this.word;}
console.log(foo());
foo.apply(obj);
console.log(foo());
我在chrome浏览器中运行了同样的操作,它输出Hello和Hello,使用apply(),输出应该是Hello和GB。
我对这种用法感到困惑。 请帮忙。
最佳答案
console.log
使用 Function.apply
调用函数后的值,因为您在使用 调用函数时提供
.this
上下文>.apply(上下文)
foo.apply(obj);
will not save thethis
context for the laterinvokation
offoo
var word = "Hello";
var obj = {
word: "GB"
};
function foo() {
return this.word;
}
console.log(foo());
console.log(foo.apply(obj));
您可以使用.bind
并将引用保留在变量中,以便引用的函数始终具有绑定(bind)上下文
var word = "Hello";
var obj = {
word: "GB"
};
function foo() {
return this.word;
}
console.log(foo());
var bar = foo.bind(obj);
console.log(bar());
关于Javascript,这个指针在浏览器和控制台上返回不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37852307/