【发布时间】:2015-08-25 10:01:58
【问题描述】:
查看最近的 Google Maps API loader source,我想知道下面的目的是什么:
google.maps.Load = function(apiLoad) {
delete google.maps.Load;
...
你为什么要delete 一个对象的属性,在它的定义中?我怀疑它可能会提高一些性能,但无法弄清楚属性如何在其定义中删除自己。
【问题讨论】:
-
deletealways 让事情变得更慢(至少在 V8 中)。在这种情况下,它可能会自行清理,因此不可能意外Load它两次。如果这个假设成立,那么更好的解决方案是将其重新分配给一个空函数:google.maps.Load = function() {}; -
@zerkms 好吧,我认为它会释放一些内存,从而提高整体性能——即使它可能是一个缓慢的调用。对吗?
-
这是不对的。详情请见debuggable.com/posts/…。
-
google.maps.Load = function() { throw new Error("Already loaded") };似乎更健壮。 -
@Sam 你介意发表你的评论作为答案吗?干杯。
标签: javascript javascript-objects