例如,我有一个 library我想保护源代码不被查看。第一个想到的方法是为私有(private)函数创建公共(public)包装器,如下所示
function executeMyCoolFunction(param1, param2, param3) {
return executeMyCoolFunction_(param1, param2, param3);
}
只有代码的公共(public)部分将以这种方式可见。很好,但是所有 Google 服务函数看起来都像 function abs() {/* */}
。我很好奇,有没有像 Google 那样隐藏库源代码的方法?
编辑 00: 不要通过使用另一个库来“隐藏”库代码,即具有已知项目 key 的 LibA 使用具有未知项目 key 的 LibB。 LibB 的公共(public)函数代码可以获取甚至执行它们。代码是
function exploreLib_(lib, libName) {
if (libName == null) {
for (var name in this) {
if (this[name] == lib) {
libName = name;
}
}
}
var res = [];
for (var entity in lib) {
var obj = lib[entity];
var code;
if (obj["toSource"] != null) {
code = obj.toSource();
}
else if (obj["toString"] != null) {
code = obj.toString();
}
else {
var nextLibCode = exploreLib_(obj, libName + "." + entity);
res = res.concat(nextLibCode);
}
if (code != null) {
res.push({ libraryName: libName, functionCode: code });
}
}
return res;
}
function explorerLibPublicFunctionsCode() {
var lstPublicFunctions = exploreLib_(LibA);
var password = LibA.LibB.getPassword();
}
最佳答案
我不知道谷歌做什么,但你可以做这样的事情(未经测试!只是一个想法):
函数声明:
var myApp = {
foo: function { /**/ },
bar: function { /**/ }
};
然后,在另一个地方,一个匿名函数写入 foo() 和 bar():
(function(a) {
a['\u0066\u006F\u006F'] = function(){
// here code for foo
};
a['\u0062\u0061\u0072'] = function(){
// here code for bar
};
})(myApp);
您可以打包或缩小以进一步混淆。
https://stackoverflow.com/questions/11915118/