代码之家  ›  专栏  ›  技术社区  ›  mway

疯狂科学家Javascript混淆思想

  •  2
  • mway  · 技术社区  · 14 年前

    所以我相信这可能至少是疯狂的,但我只是在想AS3/JS交互,这让我想-有人确切知道 怎样 通过AS3调用JS效率低?例如,如果执行以下操作:

    import flash.external.ExternalInterface;
    ExternalInterface.call("(function() { /* here's a block of code */ })");
    

    这些电话需要 eval()

    无论如何:让我们假设一下,假设您是一个异端,实际上在一个实用程序SWF(1x1,offscreen,whatever)中存储了大量Javascript,并且有基本的DOM事件绑定,当这些事件触发时将它们交给AS3,因此使用 ExternalInterface 要立即执行JS,因此Javascript中唯一加载的部分就是与Flash通信。一个天真的人甚至可能会说:“你可以将许多JS文件压缩成一个加载的SWF文件,将它们分离成不同的MC文件或其他文件!”,但实际上,这不是重点,而且在页面已经加载之后,这对我们没有任何帮助。

    我用过AS3和它的 Socket 类来代替XHR轮询(etc),所以到目前为止,我对AS3/JS交互还没有感到失望。AFAIK AS3是在Flash VM中执行的,这意味着它的效率会自动低于Javascript,对吧?有人能解释一下这有多可怕吗,效率方面的?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Robusto    14 年前

    在Flash电影中解构AS3代码并非不可能。虽然这会阻碍那些随意的观察者,但如果有技能的人想了解你的剧本,他们就能够做到。你只会在他们的道路上设置一个路障,而不是一个无法通过的路障,甚至可能是一个比标准JS混淆器生成的代码更难破解的路障。

    在性能方面,Flash执行与浏览器托管的Javascript解释器比较好。见 http://jacksondunstan.com/articles/232 一组比较。它接近于纯代码执行速度最快的JS*。

    N、 对于图形用户界面任务,到目前为止还没有任何其他的东西(如HTML5)可以接近。随着IE9新的JS引擎和硬件加速的发展,这种情况可能会有所改变,但目前还不清楚Adobe是否能够在某个时候利用同样的技术。