JS метод Object.toString()
Загальний опис
Метод Object.prototype.toString() - це вбудований метод в JavaScript, який дозволяє отримувати рядкове представлення об'єкта. Його основна суть полягає в конвертації об'єкта в рядок, що дозволяє ідентифікувати його тип. Зокрема, цей метод часто використовують для визначення типу об'єкта в умовах динамічної типізації в JavaScript.
Щоб використовувати Object.prototype.toString(), достатньо викликати його для будь-якого об'єкта. За замовчуванням, якщо ви не перевизначаєте метод для свого об'єкта, він поверне рядок у форматі "[object Type]", де "Type" - це тип об'єкта.
Наприклад:
const obj = {};
console.log(obj.toString()); // "[object Object]"
const arr = [1, 2, 3];
console.log(arr.toString()); // "1,2,3" (оскільки для масивів метод `toString` перевизначений)
Але можна також використовувати цей метод для визначення конкретного типу об'єкта:
const isDate = (obj) => Object.prototype.toString.call(obj) === '[object Date]';
console.log(isDate(new Date())); // true
console.log(isDate({})); // false
Важливо розуміти, що різні типи об'єктів можуть мати свої реалізації методу toString(), які повертають рядкове представлення об'єкта, відмінне від стандартного. Якщо вам потрібно отримати стандартне представлення об'єкта, завжди користуйтеся методом Object.prototype.toString.call(obj).
Також, якщо ви створюєте власний тип об'єкта і хочете, щоб його рядкове представлення було корисним, ви можете перевизначити метод toString для цього типу:
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.toString = function() {
return `Person named ${this.name} aged ${this.age}`;
}
const person = new Person("John", 30);
console.log(person.toString()); // "Person named John aged 30"
Зверніть увагу, що метод Object.prototype.toString() є одним із базових і дуже корисних методів у JavaScript, який дозволяє працювати з об'єктами.
| Нотатка: | Пам'ятайте, що метод Приклад коду:
|
| Порада: | Якщо ви хочете змінити поведінку Приклад коду:
|
| Порада: | Щоб перевірити, чи є об'єкт екземпляром певного класу або конструктора, використовуйте Приклад коду:
|
| Порада: | Використовуючи Приклад коду:
|
Синтаксис
toString()
Параметри
Return
stringПовертає рядок, що представляє об'єкт у форматі
[object Type], де "Type" вказує на внутрішній тип об'єкта. Тип може бути, наприклад, "Array", "Function", "Date" та іншими. Цей метод корисний для визначення конкретного внутрішнього типу об'єкта у випадках, коли типові методи перевірки можуть бути неточними.
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
1 |
1 |
1 |
3 |
12 |
| Переглядач | ||||
|---|---|---|---|---|
4.4 |
18 |
4 |
1 |
| Переглядач | ||
|---|---|---|
0.10.0 |
1.0 |
Приклади
Цей приклад дозволяє користувачу вибирати тип даних зі спадного списку і, натискаючи кнопку, отримувати результат, який вказує на конкретний тип даних обраного елементу.
У цьому прикладі ми використовуємо Object.prototype.toString() для визначення типу даних змінної. Метод toString() може допомогти нам отримати більш конкретний тип даних, ніж просто використання typeof.
const arr = [1, 2, 3];
const date = new Date();
const obj = {};
console.log(Object.prototype.toString.call(arr)); // "[object Array]"
console.log(Object.prototype.toString.call(date)); // "[object Date]"
console.log(Object.prototype.toString.call(obj)); // "[object Object]"
// Функція для визначення типу даних
function getType(value) {
return Object.prototype.toString.call(value).slice(8, -1);
}
console.log(getType(arr)); // "Array"
console.log(getType(date)); // "Date"
console.log(getType(obj)); // "Object"
У цьому прикладі ми створимо користувацький об'єкт Person і перевизначимо для нього метод toString(). Це може бути корисно, наприклад, коли ви хочете логічно і зрозуміло відобразити ваш об'єкт у вигляді рядка.
function Person(name, age) {
this.name = name;
this.age = age;
}
// Перевизначаємо метод toString для об'єкта Person
Person.prototype.toString = function() {
return `[Person: ${this.name}, Age: ${this.age}]`;
}
const person = new Person("Олег", 30);
console.log(person.toString()); // "[Person: Олег, Age: 30]"
