我在阅读闭包库的代码段时,看到了下面的代码片段:
/**
* Gets the document object being used by the dom library.
* @return {!Document} Document object.
*/
goog.dom.getDocument = function() {
return document;
};为什么我们在getter方法中包装了文档引用?文档不是一个全局对象吗?
发布于 2016-05-03 16:32:56
我看到了两个逻辑原因,都涉及闭包编译器:
Document,并且它从不为null。Google闭包开发人员可能已经将其硬编码到闭包编译器中,但通过显式显示,他们避免为存在于全局对象上的属性向闭包编译器添加特例。ADVANCED_OPTIMIZATIONS时,goog.dom.getDocument可以缩小为类似a.b.c的东西。闭包编译器不能重命名document,因为它无法控制全局对象上的变量名,但它当然可以重命名引用document的函数,为您提供更小的源代码。https://stackoverflow.com/questions/36988216
复制相似问题