【发布时间】:2021-10-13 08:09:01
【问题描述】:
在用户的 sendTo 方法中,我尝试绑定之前定义的函数并将 this.name 作为第一个参数发送。但如果我尝试控制台日志记录,this.name 将返回 undefind。如何将用户对象的上下文正确绑定到 sendTo() 方法?
function sendFrom(from, to, text) {
console.log(this);
return `${from}'s packet --> ${to} \nmessage: ${text}`;
}
let user = {
name: "Alex",
sendTo: sendFrom.bind(this, this.name),
}
user.sendTo = user.sendTo.bind(user);
console.log(user.sendTo("John", "some message"));
{}
undefined's packet --> John
message: some message
【问题讨论】:
-
不应该是
user.sendTo.bind(this, user)吗? -
@JeremyThille 如果我使用 user.sendTo.bind(this, user),它似乎将整个用户对象绑定到 sendFrom() 的第二个参数
undefined's packet --> [object Object] -
对象字面量不创建范围,即
this不引用对象字面量(此时对象甚至不存在)。这与使用.bind无关。
标签: javascript node.js ecmascript-6