@gaming_shark

Почему вылетает ошибка Maximum call stack size exceeded?

Number.prototype.toStrings = function () {
	return x = `${this}` // ES6 string
};

Boolean.prototype.toStrings = function () {
	return x = `${this}` // ES6 string
};
Array.prototype.toStrings = function () {
	return x = `[${this}]` // ES6 string
};


Суть кода в том, что при вызове этой функции массив, число или булеан должны превращаться в строку (задача с CodeWars - https://www.codewars.com/kata/56d6b921c9ae3fd92600...)
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Полагаю, что метод у вас называется так же, как в задаче - toString, без s на конце.
А, поскольку вы используете штатное преобразование в строку, а оно, в свою очередь, снова вызывает метод toString, возникает бесконечная рекурсия, переполняющая стек вызовов. Вам надо написать свои методы, не использующие системные преобразования. Например:
Boolean.prototype.toString = function () {
  return this ? 'true' : 'false';
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы