例如,我有一个库,我想保护源代码不被查看。想到的第一个方法是为私有函数创建公共包装器,如下所示
function executeMyCoolFunction(param1, param2, param3) {
return executeMyCoolFunction_(param1, param2, param3);
}
通过这种方式,只有代码的公共部分是可见的。很好,但所有 Google 服务功能看起来都像function abs() {/* */}
. 我很好奇,有没有像谷歌那样隐藏库源代码的方法?
编辑00:不要通过使用另一个库来“隐藏”库代码,即具有已知项目密钥的LibA 使用具有未知项目密钥的LibB。LibB 的公共函数代码可以获取甚至执行。代码是
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();
}