No estoy seguro de que alguien más haya abordado su pregunta directamente, que es el código que se ve desde el comando Ver código fuente del navegador.
Como han dicho otros, no hay forma de proteger javascript destinado a ejecutarse en un navegador de un visor determinado. Si el navegador puede ejecutarlo, cualquier persona determinada puede verlo / ejecutarlo también.
Pero, si coloca su javascript en un archivo javascript externo que se incluye con:
<script type="text/javascript" src="http://mydomain.com/xxxx.js"></script>
etiquetas, entonces el código javascript no será inmediatamente visible con el comando Ver código fuente, solo la etiqueta de secuencia de comandos en sí será visible de esa manera. Eso no significa que alguien no pueda simplemente cargar ese archivo javascript externo para verlo, pero sí preguntó cómo mantenerlo fuera del comando Ver código fuente del navegador y esto lo hará.
Si realmente quisiera hacer más trabajo para ver la fuente, haría todo lo siguiente:
- Ponlo en un archivo .js externo.
- Ofusque el archivo para que la mayoría de los nombres de variables nativas se reemplacen con versiones cortas, de modo que se eliminen todos los espacios en blanco innecesarios, de modo que no se pueda leer sin más procesamiento, etc.
- Incluya dinámicamente el archivo .js agregando etiquetas de secuencia de comandos mediante programación (como lo hace Google Analytics). Esto hará que sea aún más difícil acceder al código fuente desde el comando Ver código fuente, ya que no habrá un enlace fácil para hacer clic allí.
- Ponga tanta lógica interesante que desee proteger en el servidor que recupere a través de llamadas ajax en lugar de realizar un procesamiento local.
Con todo lo dicho, creo que debería centrarse en el rendimiento, la fiabilidad y hacer que su aplicación sea excelente. Si es absolutamente necesario proteger algún algoritmo, colóquelo en el servidor, pero aparte de eso, compita por ser el mejor en lo que hace, no por tener secretos. En última instancia, así es como funciona el éxito en la web.