Javascript,这个指针在浏览器和控制台上返回不同的值

标签 javascript this

我对 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。

enter image description here

我对这种用法感到困惑。 请帮忙。

最佳答案

console.log 使用 Function.apply 调用函数后的值,因为您在使用 调用函数时提供 this 上下文>.apply(上下文).

foo.apply(obj); will not save the this context for the later invokation of foo

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/

相关文章:

javascript - Vue 中的动态属性选择 - 先前的选择被设为空白

javascript - 如何使用 Sequelize 将值 'null' 插入 MariaDB?

javascript - 如何计算旋转矩形的碰撞

c++ - 在C++线程对象中重新绑定(bind)*this, move 构造函数, move 赋值

javascript - 当调用 'this' 的函数位于子对象的对象内部时,您将如何引用 'this'?

javascript - jquery 包裹多个元素

javascript - 使用 JavaScript 制作日历,我怎样才能使循环从 1 的特定日期开始,而不仅仅是隐藏索引

c++ - 在成员函数中保留对对象本身的引用

javascript - 为什么 `this` 创建一个全局变量而不是使用来自调用站点的变量?

JavaScript 和 jQuery,匿名函数内的 "this"