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

最佳答案

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

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

博客文章is now out

关于javascript - Facebook的JS SDK中的ES5()包装器是开源的吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11277260/

10-12 15:49