google-apps-script - 如何以谷歌方式隐藏库源代码?

例如,我有一个 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/

相关文章:

sql-server - 是否可以限制 Entity Framework 使用的连接数?

php - 来自另一个用户的 DBus

svn - 用于将更改的文件部署到生产 Web 服务器的工具

asp.net-mvc - 通过 JQuery 发布时 Web API Controller 中的

django - 移除 ForeignKey 后迁移到第三方模型

visual-studio - 如何延迟 Visual Studio 中的波浪线(错误警告)?

html - 在新选项卡中打开链接(在框架设置内)

asp.net-mvc-3 - 如何将 IEnumerable 对象或数据从 View 传递到 Co

asp.net-mvc-3 - 如何将Web应用程序转换为SaaS?

php - session 提前结束