Skip to content

Commit

Permalink
update(JS): web/javascript/data_structures
Browse files Browse the repository at this point in the history
  • Loading branch information
undead404 committed Jul 17, 2024
1 parent c5930a6 commit 1ecddb2
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion files/uk/web/javascript/data_structures/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ JavaScript має стандартну бібліотеку вбудованих
console.log({} + []); // "[object Object]"
```

Neither `{}` nor `[]` has a `[Symbol.toPrimitive]()` method. Both `{}` and `[]` inherit `valueOf()` from {{jsxref("Object.prototype.valueOf")}}, which returns the object itself. Since the return value is an object, it is ignored. Therefore, `toString()` is called instead. [`{}.toString()`](/uk/docs/Web/JavaScript/Reference/Global_Objects/Object/toString) returns `"[object Object]"`, while [`[].toString()`](/uk/docs/Web/JavaScript/Reference/Global_Objects/Array/toString) returns `""`, so the result is their concatenation: `"[object Object]"`.
Ані `{}`, ані `[]` не мають методу `[Symbol.toPrimitive]()`. І `{}`, і `[]` успадковують `valueOf()` від {{jsxref("Object.prototype.valueOf")}}, що повертає сам об'єкт. Оскільки повернене значення є об'єктом, воно ігнорується. Таким чином, далі викликається `toString()`. [`{}.toString()`](/uk/docs/Web/JavaScript/Reference/Global_Objects/Object/toString) повертає `"[object Object]"`, а [`[].toString()`](/uk/docs/Web/JavaScript/Reference/Global_Objects/Array/toString) повертає `""`, тож результат – це їхнє зчеплення: `"[object Object]"`.

Метод `[Symbol.toPrimitive]()` завжди має пріоритет над перетворенням на будь-який конкретний примітивний тип. Перетворення на примітив здебільшого працює як перетворення на число, тому що першим викликається `valueOf()`; проте об'єкти з самописними методами `[Symbol.toPrimitive]()` можуть вирішити повернути будь-який примітив. Об'єкти {{jsxref("Date")}} і {{jsxref("Symbol")}} – єдині вбудовані об'єкти, що визначають власні методи `[Symbol.toPrimitive]()`. [`Date.prototype[Symbol.toPrimitive]()`](<(/uk/docs/Web/JavaScript/Reference/Global_Objects/Date/Symbol.toPrimitive)>) обробляє підказку `"default"` як ніби це `"string"`, натомість [`Symbol.prototype[Symbol.toPrimitive]()`](<(/uk/docs/Web/JavaScript/Reference/Global_Objects/Symbol/Symbol.toPrimitive)>) ігнорує підказку і завжди повертає символ.

Expand Down

0 comments on commit 1ecddb2

Please sign in to comment.