在 javascript 中,有一個稱為 Symbol.toprimitive 的符號屬性,它具有函式值,對嗎?
如果是這樣,那么在這種方法中,第一個單詞(即符號)是系統符號嗎?
當我們呼叫這個方法時,當我們為原始值(符號)創建屬性時,是否會形成臨時物件,哪個值是方法?
第三個混淆是在這個方法中(即[Symbol.toprimitive](提示),引數提示如何知道提示應該是“字串”或“數字”或“默認”,我的意思是我知道規則但從哪里來引數獲取它的值?
感謝您的寶貴回答:)
uj5u.com熱心網友回復:
...有一個稱為 Symbol.toprimitive 的符號屬性,它具有函式值,對嗎?
不,Symbol.toPrimitive是符號,不是函式。它被用作物件屬性的鍵,其值應該是一個函式,但它是一個符號。
...那么在這種方法中,第一個單詞(即符號)是系統符號?
它是Symbol全域物件,它是 JavaScript 代碼中用于各種目的的“知名符號”的容器。
當我們呼叫這個方法時,當我們為原始值(符號)創建屬性時,是否會形成臨時物件,哪個值是方法?
Symbol.toPrimitive不是一種方法,所以問題不會出現。
第三個混淆是在這個方法中(即[Symbol.toprimitive](提示),引數提示如何知道提示應該是“字串”或“數字”或“默認”,我的意思是我知道規則但從哪里來引數獲取它的值?
提示的值內置于 JavaScript 規范中呼叫該函式的位置。例如,一元運算-符在其運算元上使用ToNumeric,它使用ToPrimitive,傳入它想要一個數字的事實。ToPrimitive是將"number"提示傳遞給物件的[Symbol.toPrimitive](aka @@toPrimitive) 方法的原因。
讓我們考慮一個簡單的例子,它應該可以幫助你更多地理解事物:
// An object with its own Symbol.toPrimitive property
// referring to a function that implements the behavior
// we want for this object
const obj = {
[Symbol.toPrimitive](hint) {
console.log(`The hint is ${hint}`);
return hint === "number" ? 42 : "forty-two";
}
};
// `-` uses ToNumeric which uses ToPrimitive asking for a
// number if possible
let x = 4 - obj;
console.log(`x = ${x}`);
// In contrast, string concatenation doesn't have a preference
let y = "" obj;
console.log(`y = ${y}`);
// But the String function, which always wants to get a
// string if it can, asks for a string
let z = String(obj);
console.log(`z = ${z}`);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/416736.html
標籤:
