Middle
Защо е възможно да се обръщаме към примитивен низ в JavaScript като към обект?
sobes.tech AI
Отговор от AI
В JavaScript, при достъп до примитивен низ string (не String), се извършва автоматично преобразуване (boxing/обвиване) в обект String. Това е временен обект, който съдържа методи и свойства, достъпни за низове (например .length, .toUpperCase(), .indexOf()). След изпълнение на операцията върху този временен обект, той се унищожава.
Например:
// примитивен низ
const myString = "hello";
// Достъп до свойството .length на примитивния низ
// Автоматично опаковане в обект String { "hello" }
// След това се извиква свойството .length на този временен обект
console.log(myString.length); // 5
// Достъп до метода .toUpperCase() на примитивния низ
// Автоматично опаковане в обект String { "hello" }
// След това се извиква методът .toUpperCase() на този временен обект
console.log(myString.toUpperCase()); // "HELLO"
// След изпълнение на операцията, временният обект се унищожава.
// myString остава примитивен низ.
console.log(typeof myString); // "string"
Това поведение улеснява работата с примитивните типове, позволявайки използването на обектно-ориентиран синтаксис за достъп до тяхната функционалност, без да е необходимо явно създаване на обект-обвивки.
Сравнение между примитивен низ и обект String:
| Характеристика | Примитивен низ ("string") |
Обект String (new String("string")) |
|---|---|---|
| Тип | string |
object |
Сравнение с === |
По стойност | По референция |
| Общо | По-ефективен | По-малко ефективен |
| Използване | Предпочитано | Да се избягва, ако не е явно необходимо |