Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 哪种方法最适合删除删除后可能访问的对象键?_Javascript_Performance_Optimization - Fatal编程技术网

Javascript 哪种方法最适合删除删除后可能访问的对象键?

Javascript 哪种方法最适合删除删除后可能访问的对象键?,javascript,performance,optimization,Javascript,Performance,Optimization,我的困境如下:我一直在使用delete方法删除对象键,一些函数在删除后试图访问这些键,我发现这导致了一个小的、微小的。。。随着时间的推移,巨大的内存泄漏 我一直在试图找到一个好的答案,但到目前为止没有运气。我找到的唯一一个light引用解释说,最好将对象键转换为null,而不是使用delete来避免内存泄漏 现在,我一直在想,对于我所描述的案例,哪种方法是最好的(也许是一种总体最佳实践): 1-删除Object.key 2-Object.key=null 3-Object.key=“” 4-Ob

我的困境如下:我一直在使用delete方法删除对象键,一些函数在删除后试图访问这些键,我发现这导致了一个小的、微小的。。。随着时间的推移,巨大的内存泄漏

我一直在试图找到一个好的答案,但到目前为止没有运气。我找到的唯一一个light引用解释说,最好将对象键转换为null,而不是使用delete来避免内存泄漏

现在,我一直在想,对于我所描述的案例,哪种方法是最好的(也许是一种总体最佳实践):

1-删除Object.key

2-Object.key=null

3-Object.key=“”

4-Object.key=void(0)

5-Object.key=function(){}

6-我没有列出的另一种方法-提供该方法作为示例

到目前为止,对于函数试图访问已删除密钥的情况,1号似乎几乎是不可能的,其他人是否有任何知识可以就此向我提供建议

如果可能,请提供比较或说明,说明您知道的最适合此场景的方法的优点


PS:需要移除的对象键可以是任何东西;函数、布尔值、字符串等。

当处理无法更改的错误行为代码时,对于如何处理这些键,没有最佳实践。您所能做的就是研究或测试代码,并尝试找出键的哪个值造成的危害最小

这不是语言问题。这不是最佳实践。没有什么神奇的答案永远是最好的答案。您试图通过找到一个危害最小的值来解决坏代码,而知道答案的唯一方法是找出哪个值对特定的坏代码最有效

如果键的通常值是一个字符串,那么空字符串将是一个逻辑猜测,但您实际上只需要进行测试。如果通常的值是一个对象,那么空对象或null都是逻辑猜测,这取决于坏代码的工作方式。如果通常的值是一个函数,那么您可以尝试使用一个空函数作为猜测


总而言之。研究、猜测、测试并选择能给您带来最佳结果(或最不坏结果)的选项。

既然您似乎已经准备好了一个可测试的环境,您的观察结果是什么?顺便说一句,
void 0
比输入少一个字符。;-)我真的没有答案,但我绝对不会推荐
function(){}
,因为它是真实的。
delete obj.key
不会以任何方式导致内存泄漏。如果由于密钥不存在而导致其他代码泄漏,则需要修复该代码,而不是修复密钥。如果钥匙不需要存在,那么最好的做法是使用旅行前的@RobG将其删除。刚刚检查了另一个用户帮助我做的一些事情,现在我没有可能自己进行实验,所以我想“为什么不问问社区?可能有人已经知道了”。Clint Powell我看到了这种困境,当一些函数试图检查键是否为null或空等时,但我希望肯定有一种合适的删除方法。@Shadow-那么就没有通用的最佳实践了。使用行为不端的外部脚本,尽可能减少伤害。您只能通过使用不同的选项研究或测试错误行为脚本来了解这一点。如果键的通常值是一个字符串,那么空字符串将是一个逻辑猜测,但您实际上只需要进行测试。如果通常的值是一个对象,那么空对象或
null
都将是逻辑猜测,这取决于坏代码的工作方式。根据我们在评论中达成的共识,我选择了您的答案,感谢大家花时间回答这个问题。