Baseline Widely available
Symbol.toPrimitive
ÑвлÑеÑÑÑ Ñимволом (symbol), коÑоÑÑй опиÑÑÐ²Ð°ÐµÑ ÑвойÑÑво обÑекÑа как ÑÑнкÑиÑ, коÑоÑÐ°Ñ Ð²ÑзÑваеÑÑÑ Ð¿Ñи пÑеобÑазовании обÑекÑа в ÑооÑвеÑÑÑвÑÑÑее пÑимиÑивное знаÑение.
const object1 = {
[Symbol.toPrimitive](hint) {
if (hint === "number") {
return 42;
}
return null;
},
};
console.log(+object1);
// Expected output: 42
ÐпиÑание
С помоÑÑÑ ÑвойÑÑва Symbol.toPrimitive
(коÑоÑое опиÑÑваеÑÑÑ ÐºÐ°Ðº ÑÑнкÑиÑ), обÑÐµÐºÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑиведÑн к пÑимиÑÐ¸Ð²Ð½Ð¾Ð¼Ñ ÑипÑ. ФÑнкÑÐ¸Ñ Ð²ÑзÑваеÑÑÑ Ñо ÑÑÑоковÑм аÑгÑменÑом hint
, коÑоÑÑй пеÑедаÑÑ Ð¶ÐµÐ»Ð°ÐµÐ¼Ñй Ñип пÑимиÑива. ÐнаÑением аÑгÑменÑа hint
Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð´Ð½Ð¾ из ÑледÑÑÑиÑ
знаÑений "number"
, "string"
, и "default"
.
ÐпиÑаннÑе ниже пÑимеÑÑ Ð¿Ð¾ÐºÐ°Ð·ÑваÑÑ ÐºÐ°Ðº Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑвойÑÑва Symbol.toPrimitive
можно пÑивеÑÑи обÑÐµÐºÑ Ðº пÑимиÑÐ¸Ð²Ð½Ð¾Ð¼Ñ ÑипÑ.
// ÐбÑÐµÐºÑ Ð±ÐµÐ· ÑвойÑÑва Symbol.toPrimitive
var obj1 = {};
console.log(+obj1); // NaN
console.log(`${obj1}`); // "[object Object]"
console.log(obj1 + ""); // "[object Object]"
// ÐбÑÐµÐºÑ Ñо ÑвойÑÑвом Symbol.toPrimitive
var obj2 = {
[Symbol.toPrimitive](hint) {
if (hint == "number") {
return 10;
}
if (hint == "string") {
return "hello";
}
return true;
},
};
console.log(+obj2); // 10 -- желаемÑй Ñип (hint) - "number"
console.log(`${obj2}`); // "hello" -- желаемÑй Ñип (hint) - "string"
console.log(obj2 + ""); // "true" -- желаемÑй Ñип (hint) - "default"
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4