gpt4 book ai didi

javascript - 删除对象定义内的属性;为什么?

转载 作者:搜寻专家 更新时间:2023-11-01 05:00:18 24 4
gpt4 key购买 nike

查看最近的 Google Maps API 加载器 source ,我想知道以下内容的目的是什么:

google.maps.Load = function(apiLoad) {
delete google.maps.Load;
...

为什么要删除对象定义中的属性?我怀疑它可能会提高一些性能,但无法弄清楚属性如何在其定义内删除自身。

最佳答案

显然我们只能做出假设,因为只有代码作者才能确定。

如果原因是为了确保 Load 过程只执行一次,那么选择的决定就非常糟糕。

问题是删除属性使得 V8(可能是其他引擎)不可能使用所谓的“隐藏类”(这是一种用于更快地查找对象属性的优化方法)。

更好的选择是

google.maps.Load = function() {};

google.maps.Load = function() { throw new Error("Already loaded") };

根据 @Sam 的建议在comments .

引用资料:

关于javascript - 删除对象定义内的属性;为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32201029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com