这是因为它的特殊性delete
.
这很难理解 - 即使是mozilla文档也不清楚:
delete运算符删除对象,对象的属性或数组中指定索引处的元素.
但后来的州
如果expression 不计算 属性,则delete不执行任何操作.
但如果我们继续阅读,最后会有一些清晰度
您可以使用delete运算符删除隐式声明的 变量,但不能删除使用var 语句声明的变量 .
你去吧 另请注意此页面如何提及delete
返回值为true | false,具体取决于操作的合法性.
下面的这个小脚本重复了与脚本相似的行为,但是以一种易于查看的小方式(需要使用firebug)
var a = {foo:'bar',bar:'foo',baz:1}; var b = {"a":a} console.log( a ); console.log( b ); delete a; delete b; console.log( a ); console.log( b ); delete b.a; console.log( b );
简而言之,我认为您的解决方案只是将您的选项重置为空对象
options = {};