Facebook的JS SDK开源是ES5()包装吗?

时间:2012-06-30 20:04:26

标签: javascript facebook-javascript-sdk

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的任何人都可以评论开源的可能性吗?这是我能发现非常有用的东西。

3 个答案:

答案 0 :(得分:5)

我们确实使用预处理器(基于jspatch),它允许我们编写常规的ES5代码。 ES5函数本身基本上是来自MDNJSON3的polyfill的包装。

这不仅可以让我们编写ES5,而且还可以避免使用像Function#bind和JSON.stringify这样的错误实现。

在不久的将来可能会有一篇博文发布:)

编辑:博客文章现已结束 - http://fb.me/2lizHU15p

答案 1 :(得分:1)

搜索Facebook的开源github存储库并未显示任何ES5方法。我明确地检查并递归地抓了那些提到javascript的那些。因此,您所看到的内容似乎并未公开。我在其他任何地方都找不到它。

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

答案 2 :(得分:0)

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

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

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

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