@ChrisMenschenin
Возвысь низкое и унизь высокое.

Как работает метод toString?

Здравствуйте.
Правильно ли я понимаю, что при вызове объекта (напр alert ( obj )), он как свойство некоего глобального объекта получил через Object.defineProperty() геттер, и поэтому при вызове его имени он автоматически запускает toString?
Или это происходит как-то по-другому?
Спасибо.
  • Вопрос задан
  • 292 просмотра
Решения вопроса 1
evgeniy8705
@evgeniy8705
Повелитель вселенной
При вызове объекта в контексте где нужно строковое значение, происходит неявное преобразование типов. Неявно вызывается метод toString наследованный от Object.prototype, либо перезаписанный в классе на основе которого был создан объект.
const obj = {
	name: "Alex",
  gender: "male"
};

const arr = [1, 2, 3, 4, 5];

alert(obj); // [object Object] 
alert(arr); // 1, 2, 3, 4, 5 // Перезаписанный метод toString();


// Тоже самое
alert(Object.prototype.toString.call(obj)) // [object Object] (obj.toString());
alert(Array.prototype.toString.call(arr)) // 1, 2, 3, 4, 5 (arr.toString());
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы