При определении пользовательского метода .toString() в прототипе Array, как вы получаете доступ к фактическому массиву, для которого вызывается метод?
Это работает:
Array.prototype.toString = () => 'custom';
"" + [1,2,3]; // 'custom'
Но "это" не работает:
Array.prototype.toString = () => "0: " + this[0];
"" + [1,2,3]; // 0: undefined
Ясно, что this
не ссылается на массив, к которому вызывается .toString(), но я не уверен, почему и как получить доступ к массиву.
Примечание: я знаю, как ужасно переопределять встроенные методы, подобные этому. Я делаю это для отладки сложной (для моего уровня) рекурсивной функции — сам код не использует эту функциональность для какой-либо логики.
Более подробная справочная информация заключается в том, что я вывожу массив из множества разных мест, и изменение форматирования по умолчанию казалось проще, чем каждый раз писать гораздо более длинный оператор журнала. Оказывается, я ошибался, но теперь просто хочу разобраться в этом вопросе, потому что это похоже на что-то основное, что я должен знать.