提问人:OTRA 提问时间:10/29/2023 最后编辑:Titus OTRA 更新时间:10/29/2023 访问量:44
我该如何解决“这个”?[关闭]
How can I solve 'this'? [closed]
问:
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);
当我运行此代码时,没有输出任何值。
答:
1赞
trincot
10/29/2023
#1
当我运行此代码时,没有输出任何值。
看起来你认为这将运行你的函数,但事实并非如此。它只是返回一个新函数。.bind()
其次,对箭头函数没有影响,所以在这里调用是没有用的。bind
我想输出全球蜂蜜
那么,在你的代码中,“本地蜂蜜”的目的是什么呢?我假设你真的想输出“本地蜂蜜”......
在这种情况下,您不需要绑定,但应该创建一个 ,以便它将初始化为调用它的对象,而不是在其词法上下文(在您的代码中)初始化。test
function
this
this
globalThis
所以:
var target = 'global honey';
function test() {
console.log(this.target); // local honey
}
const object = {
target: 'local honey',
action: test
}
object.action();
评论
bind
对箭头函数没有影响,并且不会运行调用它的函数,但返回一个绑定函数(代码不使用该函数)。但是我很困惑......你说你想输出“全球蜂蜜”,那你为什么要这样做?你是不是搞错了,居然想输出“本地蜂蜜”?bind
bind(object)
const test = () => {
const test = function() {
object.action()
undefined
test