0

需要澄清以下代码。

我记得,有时 Utilities.jsonStringify() 没有将函数保存在 JSON 对象中。但现在他们将其保存为字符串 ("resultFn":"\nfunction (pageNum, pageSize, filter) {\n return [{a:\"abc1\", b:\"bcd1\"}, {a: \"abc2\", b:\"bcd2\"}, {a:\"abc3\", b:\"bcd3\"}, {a:\"abc4\", b:\"bcd4\"} ];\n})。

并且使用 eval(),可以恢复该函数(请参阅我在 myFunction 中的代码)。它对我来说很好,至少对于琐碎的例子。

问:AFAIK,函数序列化超出标准。而且由于这没有记录,我们可以依靠谷歌作为 API 合同吗?

我还可以添加吗 - 这将为我节省很多代码行:)

var fnResults = function(pageNum, pageSize, filter) {
    return [
        { a: "abc1", b: "bcd1" },
        { a: "abc2", b: "bcd2" },
        { a: "abc3", b: "bcd3" },
        { a: "abc4", b: "bcd4" },  
    ];
};

var TestConfig = {
    pagerId: "TestId",
    pageSize: 10,
    widgetWidth: "15cm",
    filterOptions: [],
    resultFn: fnResults,
};


function myFunction() {
    Logger.log(TestConfig.resultFn(1,2,3));
    var s = Utilities.jsonStringify(TestConfig);
    Logger.log(s);
    var o = Utilities.jsonParse(s);
    Logger.log(eval(o.resultFn)(1,2,3));
}
4

1 回答 1

0

这是一个错误,你不应该依赖它。

于 2013-03-01T03:52:16.783 回答