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
函数本身基本上是MDN和JSON3的polyfill的包装。
这不仅使我们能够编写ES5,而且避免了我们使用诸如Function#bind和JSON.stringify
之类的错误实现。
博客文章is now out。
关于javascript - Facebook的JS SDK中的ES5()包装器是开源的吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11277260/