【发布时间】:2016-06-16 07:15:21
【问题描述】:
我对 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。
我对这种用法感到困惑。 请帮忙。
【问题讨论】:
-
不管你执行多少次
foo()(包括通过foo.apply(obj)),你永远不会改变this.word的值,那它为什么要返回不同的值呢? -
this.obj.word 会给你你想要的!
-
我认为您的困惑来自对
Function.prototype.apply的误解。我建议你仔细阅读文档并尝试console.log(foo.apply(obj)) -
要了解更多关于
this键在 js 中的工作原理,请阅读 kyle simpson 的 github.com/getify/You-Dont-Know-JS/blob/master/…。
标签: javascript this