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

Nat*_*dly 2 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;
});
Run Code Online (Sandbox Code Playgroud)

或者对于顶级对象,

ES5('JSON', 'parse', false, r.responseText);
Run Code Online (Sandbox Code Playgroud)

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

g.api.whitelist.forEach(function(ca) {
    s[ca] = 1;
});
Run Code Online (Sandbox Code Playgroud)

和

JSON.parse(r.responseText);
Run Code Online (Sandbox Code Playgroud)

(可能还有更长的变量名称)

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

Sea*_*sey 5

我们确实使用了一个预处理器(基于jspatch),它允许我们编写常规的ES5代码.该ES5函数本身基本上是来自MDN和JSON3的polyfill的包装器.

这不仅让我们编写ES5,而且它避免了我们使用诸如Function#bind和JSON.stringify之类的错误实现.

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

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