Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

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, який дозволяє працювати з об'єктами.

Нотатка:

Пам'ятайте, що метод Object.prototype.toString() безпосередньо повертає [object Type], де "Type" є типом об'єкта. Це може бути корисним для визначення внутрішнього типу об'єкта, особливо коли ви працюєте з різними видами об'єктів.

Приклад коду:

const arr = [];
console.log(arr.toString());       // ''
console.log(Object.prototype.toString.call(arr)); // '[object Array]'
Порада:

Якщо ви хочете змінити поведінку toString() для вашого власного об'єкта, ви можете перевизначити цей метод в прототипі вашого об'єкта. Однак будьте обережні, щоб не перезаписувати вбудований метод для всіх об'єктів.

Приклад коду:

function Dog(name) {
 this.name = name;
}
Dog.prototype.toString = function() {
 return `Dog named ${this.name}`;
};
const myDog = new Dog('Rex');
console.log(myDog.toString());  // 'Dog named Rex'
Порада:

Щоб перевірити, чи є об'єкт екземпляром певного класу або конструктора, використовуйте Object.prototype.toString(), адже цей метод менш чутливий до маніпуляцій порівняно із instanceof.

Приклад коду:

function isDate(obj) {
 return Object.prototype.toString.call(obj) === '[object Date]';
}
Порада:

Використовуючи Object.prototype.toString(), можна виявити об'єкти, які були створені в інших контекстах, таких як інші вікна або фрейми. Це корисно в сценаріях, де множинне вікно або крос-документний доступ є звичайним.

Приклад коду:

const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
const iframeArray = new iframe.contentWindow.Array();
console.log(Object.prototype.toString.call(iframeArray));  // '[object Array]'

Синтаксис

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