Например, код.
let a = 1
a.__proto__.toString = function(){ return 'test'}
a.toString()
//"test"
a + '2'
//"12"
Я не могу понять, где хранится метод toString
. Если я сделаю это с изменяемыми объектами, я получил
let o = {}
o.__proto__.toString = function(){ return 'test'}
o.toString()
//"test"
o + '2'
//"test2"
Это работает, как я и ожидал. Поэтому вопрос заключается в том, где toString
Number
или других неизменяемых типов, которые хранятся и вызывается при преобразовании типов.