Este grupo redactor ha pasado mucho tiempo investigando para dar solución a tus dudas, te dejamos la respuestas por esto esperamos resultarte de gran ayuda.
Solución:
Tiene algún uso para la depuración, ya que te permite ver el código de la función. Puede comprobar si se ha sobrescrito una función y si una variable apunta a la función correcta.
Tiene algunos usos para el código javascript ofuscado. Si desea hacer una ofuscación extrema en javascript, puede transformar todo su código en un montón de caracteres especiales y no dejar números ni letras. Esta técnica se basa en gran medida en poder acceder a la mayoría de las letras del alfabeto al forzar la llamada toString en todo con +""
(ejemplo : (![]+"")[+[]]
es f
). Algunas letras como v
solo se puede acceder llamando a String en una función nativa como [].sort
. La carta v
es importante para el código ofuscado, ya que le permite llamar eval
, que le permite ejecutar cualquier cosa, incluso bucles, sin usar letras. Aquí hay un ejemplo de esto.
function.ToString – Devuelve un string que representa el código fuente de la función. Para los objetos Function, el método toString integrado descompila la función en el origen de JavaScript que define la función.
Lee esto en mozilla.
Puede usarlo como una implementación para cadenas de varias líneas en la fuente de Javascript.
Como se describe en esta publicación de blog de @tjanczuk, uno de los grandes inconvenientes de Javascript son las cadenas de varias líneas. Pero puedes aprovechar .toString()
y la sintaxis para comentarios de varias líneas (/* ... */
) para producir los mismos resultados.
Mediante el uso de la siguiente función:
function uncomment(fn)n*//g).slice(1,-1).join();
;
… luego puede pasar comentarios de varias líneas en el siguiente formato:
var superString = uncomment(function()/*
String line 1
String line 2
String line 3
*/);
En el artículo original, se señaló que Function.toString()
El comportamiento de no está estandarizado y, por lo tanto, es de implementación discreta, y el uso recomendado fue para Node.js (donde se puede confiar en el intérprete V8); sin embargo, un Fiddle que escribí parece funcionar en todos los navegadores que tengo disponibles (Chrome 27, Firefox 21, Opera 12, Internet Explorer 8).
valoraciones y comentarios
Nos encantaría que puedieras difundir esta división si te fue de ayuda.