草庐IT

javascript - JavaScript `var` 关键字的混淆操作

我遇到了一个关于var关键字的(对我来说)非常奇怪的问题。我已将它简化为一个相当小的测试用例,并发现它在Node.js(因此是V8和Chrome)、Safari4的检查器(因此是Nitro)和FireBug(显然是SpiderMonkey)中都有展示。我最初是准备一份错误报告,但由于它被广泛展示,我假设我完全误解了JavaScript应该如何确定范围和查找变量。测试用例非常小,在GitHub上:http://gist.github.com/260067.第一个示例和第二个示例之间的唯一区别是包含了var关键字。这里还有一个类似的测试用例,它以不同的方式展示了相同的“问题”:https:

javascript - 混淆javascript属性?

我最近测试了UglifyJS和YUICompressor并注意到一些奇怪的事情。两个压缩器似乎都不会更改对象属性的名称,只会更改变量和函数的名称。例如,如果我有以下代码:varobjName={first:2,second:4};alert(objName.first+""+objName.second);名称first和second在缩小版本中保持不变。这是为什么? 最佳答案 由于在javascript中,一个新的作用域是在一个函数中创建的,您可以在一个立即调用的函数中对您的代码进行作用域。//scoped(function(){

javascript - 免费的 JavaScript 混淆器?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。我正在寻找一个免费JavaScript混淆器。压缩就够了吗?你会推荐什么工具?当然,我不需要军事风格的混淆,我需要一种简单的方法来防止child通过查看源代码或使用一些简单的方法(例如unescape())来窃取我的javascript。谢谢,汤姆

javascript - 与 'prototype'(Firefox 扩展)混淆

我正在开发一个firefox扩展,我想我现在遇到了一个关于Javascript的基本误解,准确地说是“原型(prototype)”概念。考虑以下最小示例,注意设置变量this.demo和this.test时的差异:varExample=newArray();Example.Foo=function(){this.test=null;this.demo="World";};Example.Foo.prototype={initialize:function(resource){this.test="Hello";this.display();},display:function(){al

javascript - 如何在不将整个类放入闭包的情况下使用 YUI 混淆全局变量

假设有一个全局变量是一个函数functionMyClass(){}还有这个类的方法比如MyClass.func1=function(){}我想确保YUI压缩和混淆工作不会像这样将整个类放在闭包中(function(){functionMyClass(){}MyClass.func1=function(){}})();有没有办法让YUI压缩工作而不这样做? 最佳答案 好吧,我想你可以在压缩之前将它包装在一个匿名函数中,然后在压缩之后删除匿名函数。还要确保您使用的是原型(prototype);)(function(){functionM

javascript - TypeScript类继承构造函数混淆

我正在学习EloquentJavascript这本书,但在章节结尾的练习中遇到了一些障碍。我很早就决定,我将主要使用TypeScript来解决vanillaJS之上的这些练习,只是为了让自己接触TS提供给我的额外功能。完整的练习可以在这里找到:http://eloquentjavascript.net/06_object.html#h_nLNNevzcF7在我看来,我应该基本上扩展作者在本章中定义的预先存在的类,我已尽最大努力用TypeScript重新编写以利用类://fromtextbook.functionrepeat(string:string,times:number):str

javascript - AngularJS 混淆

我正在尝试混淆我的angularjs应用程序,但它正在崩溃。我知道这是框架的一个问题,他们已尝试通过$inject方法进行补救。http://docs.angularjs.org/tutorial/step_05请参阅“缩小说明”部分。要解决此问题,他们建议执行YourController.$inject=['$scope','$http'];我继续这样做以匹配我的申请:AventosController.$inject=['$scope','$http','$q','controllerComm'];VforumController.$inject=['$scope','$http'

javascript - 代码混淆在javascript中真的有用吗?

最近我转到了gulp任务管理器,我注意到默认情况下,构建任务会生成.map文件。这让我想知道:混淆生产部署代码有用吗?它能保护我的软件免遭黑客攻击吗?如果是,我应该从那里删除我的.map文件吗? 最佳答案 简单的混淆并不能保护您的软件免遭黑客攻击。如果你真的想保护你的javascript,添加一些东西会让试图窃取或篡改你的软件的人的生活变得非常困难,你应该检查Jscrambler.我还没有看到任何解决方案甚至接近它们使您能够实现的保护级别。关于sourcemaps的问题,如果你混淆yes,你应该删除它们。

javascript - 与 React 的默认导入混淆

要导入React,我们编写importReactfrom'react'。但这是默认导出权吗?因此,如果我将其名称更改为React以外的名称,它也应该可以工作。但它不起作用。谁能解释一下为什么? 最佳答案 本质上,JSX编译器(如Babel/TypeScript)将JSX代码转换为纯JavaScript。例如,下面的JSX代码:constElement=()=>(Heythere);编译成:constElement=()=>(React.createElement("div",null,"Heythere"));现在是可以被浏览器解析

JavaScript 对象字面量符号混淆

在Firefox控制台中,这段代码会产生错误:{"d":["bankaccountnumber","$1234.56"]}>SyntaxError:invalidlabel{>message="invalidlabel",more...}这段代码工作得很好{d:["bankaccountnumber","$1234.56"]}>["bankaccountnumber","$1234.56"]这段代码也能正常工作vara={'d':["bankaccountnumber","$1234.56"]};a.d>["bankaccountnumber","$1234.56"]有人可以帮忙解释一