javascript - 在 javascript 函数上调用 toString 返回源代码

标签 javascript tostring

我刚刚发现,当您在 javascript 函数上调用 toString() 时,如 myFunction.toString() 中,会返回该函数的源代码。

如果您在 Firebug 或 Chrome 控制台中尝试它,它甚至会为您很好地格式化它,即使是最小化的 javascript 文件。
我不知道混淆文件的作用。

这样的 toString 实现有什么用?

最佳答案

它对调试有一定的用处,因为它可以让您查看函数的代码。您可以检查函数是否已被覆盖,以及变量是否指向正确的函数。

它有一些用于混淆 javascript 代码的用途。如果你想在 javascript 中进行硬核混淆,你可以将你的整个代码转换成一堆特殊字符,并且不留下任何数字或字母。这种技术在很大程度上依赖于能够通过使用 +""

强制对所有内容调用 toString 来访问大多数字母表中的字母

示例:(![]+"")[+[]]f,因为 (![]+"")求值为字符串 "false"[+[]] 求值为 [0],因此你得到 "false"[ 0] 提取第一个字母 f

v 等某些字母只能通过调用 toString 等 native 函数(如 [].sort)来访问。字母 v 对于混淆代码很重要,因为它可以让您调用 eval,这样您就可以执行任何操作,甚至循环,而无需使用任何字母。 Here is an example of this .

关于javascript - 在 javascript 函数上调用 toString 返回源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5327668/

相关文章:

javascript - JSON 返回 [object Object] angularjs

javascript - 如何使用 jQuery 在 for 循环的迭代中连续添加变量?

javascript - 为什么删除属性时对象索引不重置?

Java如何打印 "x"括号内的星星数

c# - 如何在 C# 中将 nchar 转换为字符串?

c# - ToString() 默认 CultureInfo

java - 如何打印我的 Java 对象而不得到 "SomeType@2f92e0f4"?

javascript - AngularJS 过滤器元编程

javascript - AWS - 导入 JSON 文件以加载 Dynamo 表

java - toString 的显式与隐式调用