我在一個采訪中,有一個問題:
當物件 O 的方法 X 作為引數傳遞給函式 Y 時,如果 X 包含對“this”的參考并在 Y 內部執行會發生什么?請提供代碼示例。
這段代碼是對問題的正確解釋嗎?
let O = {
name: 'John',
age: 30,
X() {
console.log(this.name);
},
};
let generic = O.X();
function Y(param) {
return param;
}
console.log(Y(generic));
您能否幫助我理解并回答這個問題,即使只是舉個例子?
uj5u.com熱心網友回復:
問題詢問是否傳遞了函式,而不是是否立即呼叫函式,然后傳遞。他們可能在想這樣的事情:
let O = {
name: 'John',
age: 30,
X() {
console.log(this.name);
},
};
function callbackInvoker(fn) {
fn();
}
callbackInvoker(O.X);
如您所見,除非傳遞的方法首先被系結,或者是箭頭函式,否則它與物件的this系結O將丟失,這可能是問題打算測驗您的內容。
uj5u.com熱心網友回復:
let O = {
name: 'John',
age: 30,
X() {
console.log(this.name);
},
};
let generic = O.X;
function Y(fn) {
return fn(); // <-- execute here
}
console.log(Y(generic));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/442127.html
標籤:javascript 目的 方法 论据 这
