Hola, javascript ya implementa
Map.
El problema de la línea 11 es un problema de contextos, el clousure (función anónima) que le asignas a this.put en la línea 7 no comparte el contexto que Map, si bien Java Script funciona con objetos, estos se crean a partir de prototipos, no de clases.
El tema de los clousures los trata en detalle la
biblioteca de Mozilla.
La solución por tanto es llamar con
this. a la variable datos en las líneas 11 y 12.
Saludos