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]"