我知道這是一個奇怪的問題,但我還是會問。
下面的偽代碼函式提供了一個虛擬屬性 getter。它應該做的是:
> const calc = Calculator(3)
> calc.multiple // returns getter result directly
6
> calc.multiple(4) // returns thunk result, thus behaves like a function
12
這是我的偽代碼:
function Calculator(num) {
return {
get multiple() {
if (isFunctionCalled()) { // isFunctionCalled is an
// imaginary function check
return (mult = 3) => {
return mult * num;
};
}
// getter called, default calulation
return 2 * num;
},
};
}
uj5u.com熱心網友回復:
不,沒有辦法從內部知道multiple它回傳的值在使用時是用作函式還是用作非函式。
您始終可以回傳一個函式并將立即值作為該函式的屬性提供,但在一種情況下不能回傳數字,而在另一種情況下不能回傳函式。
您還可以通過覆寫您回傳的函式上的 、 和/或操作來玩游戲[Symbol.toPrimitive],valueOf但這toString在野外使用時往往會產生令人驚訝的結果。
您可能最好通過名稱、multiplevs.getMultiple或multiplevs.multipleThunk等來區分。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/464587.html
標籤:javascript 吸气剂 重击
