在用戶的 sendTo 方法中,我嘗試系結之前定義的函式并將 this.name 作為第一個引數發送。但是如果我嘗試控制臺日志記錄,this.name 會回傳 undefin。如何將用戶物件的背景關系正確系結到 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
uj5u.com熱心網友回復:
我想您可以通過不使用任何系結來實作預期的行為:
function sendFrom(to, text) {
console.log(this);
return `${this.name}'s packet --> ${to} \nmessage: ${text}`;
}
let user = {
name: "Alex",
sendTo: sendFrom
}
console.log(user.sendTo("John", "some message"));
uj5u.com熱心網友回復:
sendTo: sendFrom.bind(this, this.name),
里面的這個屬性user是導致問題的原因。當此代碼運行時this屬于視窗物件而不是用戶。所以最后sendTo是一個背景關系為window和第一個引數為的方法window.name
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/311100.html
標籤:javascript 节点.js ecmascript-6
上一篇:根據引數選擇是否提供的單一查詢
