2

Facebook 的 JS SDK 最近开始使用更新的 ES5 Javascript 方法,例如Object.keys()[].map(). 它们仍然通过具有ES5()接受原始对象、所需方法的名称和任何参数的函数来支持旧浏览器。然后,如果本机方法不可用,它会运行本机方法或等效的 JS 方法。例如:

ES5(g.api.whitelist, 'forEach', true, function(ca) {
    s[ca] = 1;
});

或对于顶级对象,

ES5('JSON', 'parse', false, r.responseText);

我怀疑这是预处理器的结果,而 FB 的开发人员实际上正在编写更多类似于以下内容的内容

g.api.whitelist.forEach(function(ca) {
    s[ca] = 1;
});

JSON.parse(r.responseText);

(大概也有更长的变量名)

现在,假设我是对的,有一个预处理器,ES5() 函数和相关的预处理是一个开源项目还是内部的东西?如果它是内部的,FB 的任何人都可以评论开源它的可能性吗?这是我发现非常有用的东西。

4

3 回答 3

5

我们确实使用了一个预处理器(基于jspatch),它可以让我们编写常规的 ES5 代码。该ES5函数本身基本上是MDNJSON3的 polyfill 的包装器。

这不仅让我们可以编写 ES5,而且避免了我们使用诸如 Function#bind 和JSON.stringify.

博客文章现已发布

于 2012-09-11T00:46:49.470 回答
1

搜索 Facebook 的开源 github 存储库没有显示任何 ES5 方法。我明确地检查并递归地搜索了那些提到 javascript 的内容。因此,您所看到的似乎并没有从他们那里公开获得。我也无法在其他任何地方找到它。

如果您需要 ES5 向后兼容性,请查看此es5-shim

于 2012-07-30T21:33:57.703 回答
0

http://connect.facebook.net/en_US/all.js

这是你想要的吗?它没有在文件中列出任何许可证,并且似乎是自动生成的?

https://github.com/facebook/connect-js/

?

这将指向“是”并且许可证将是 apache?

于 2012-07-30T23:05:03.533 回答