我该如何解决“这个”?[关闭]

How can I solve 'this'? [closed]

提问人:OTRA 提问时间:10/29/2023 最后编辑:Titus OTRA 更新时间:10/29/2023 访问量:44

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

21天前关闭。

target = 'global honey';

const test = () => {
    console.log(this.target); // global honey
}

const object = {
    target: 'local honey',
    action: test
}

object.action();

此代码的输出未定义。我想输出全局蜂蜜,但我不能用bind来解决这个问题吗?

target = "global honey";

const test = () => {
  console.log(this.target); // global honey
};

const object = {
  target: "local honey",
  action: test,
};

object.action.bind(object);

当我运行此代码时,没有输出任何值。

javascript 绑定

评论

2赞 trincot 10/29/2023
bind对箭头函数没有影响,并且不会运行调用它的函数,但返回一个绑定函数(代码不使用该函数)。但是我很困惑......你说你想输出“全球蜂蜜”,那你为什么要这样做?你是不是搞错了,居然想输出“本地蜂蜜”?bindbind(object)
0赞 hanshenrik 10/29/2023
如@trincot所暗示的那样,请替换为并重试:)const test = () => {const test = function() {
0赞 Titus 10/29/2023
第一个示例记录了全球蜂蜜。如果输出是指 的返回值,那是因为该函数不返回任何内容。object.action()undefinedtest

答:

1赞 trincot 10/29/2023 #1

当我运行此代码时,没有输出任何值。

看起来你认为这将运行你的函数,但事实并非如此。它只是返回一个新函数。.bind()

其次,对箭头函数没有影响,所以在这里调用是没有用的。bind

我想输出全球蜂蜜

那么,在你的代码中,“本地蜂蜜”的目的是什么呢?我假设你真的想输出“本地蜂蜜”......

在这种情况下,您不需要绑定,但应该创建一个 ,以便它将初始化为调用它的对象,而不是在其词法上下文(在您的代码中)初始化。testfunctionthisthisglobalThis

所以:

var target = 'global honey';

function test() {
    console.log(this.target); // local honey
}

const object = {
    target: 'local honey',
    action: test
}

object.action();