为啥在javascript中删除对象不起作用[重复]
Posted
技术标签:
【中文标题】为啥在javascript中删除对象不起作用[重复]【英文标题】:why delete object in javascript is not working [duplicate]为什么在javascript中删除对象不起作用[重复] 【发布时间】:2012-09-22 04:11:50 【问题描述】:可能重复:Deleting Objects in javascript
我已经开始使用 delete 属性了。它不工作。不知道是不是浏览器兼容性问题?它是没有被删除的参考吗?
我对指针的概念不是很清楚。请告诉我们出了什么问题?
代码:
<html>
<script language="JavaScript">
MyDate = new Date();
document.write("MyDate=",MyDate,"<br>");
delete MyDate;
document.write("MyDate=",MyDate); //MyDate=undefined should be output
</script>
</html>
但输出只是第一个document.write:
MyDate=Mon Oct 01 2012 15:27:56 GMT+0530 (India Standard Time)
【问题讨论】:
参考现有问题***.com/questions/742623/… 【参考方案1】:它正在工作。由于您正在删除myDate
,因此当您尝试在第二个document.write
jsfiddle 中访问myDate
时,浏览器会抛出异常。
Uncaught ReferenceError: MyDate is not defined
【讨论】:
【参考方案2】:IIRC, delete
in javascript 删除属性。
【讨论】:
是的,这是delete
的正确行为。但是在浏览器中,所有的全局变量都是window
对象的属性,都是可以删除的。
@AndyE,那应该是delete window.MyDate
,我相信。
从技术上讲,是的。但是,某些浏览器可能会将window
视为隐式,而不是在严格模式下运行代码。有关 jsfiddle 示例,请参见 @Shusl 的答案。
再次有趣 ;-)。但是,似乎 OP 有一个反对这种处理的浏览器。见鬼,你确实知道一两件事,你应该脑补成自己的答案。我不是 javascript 的高手,只是回答,因为没有其他答案:)
@AndyE:有点错误:用var
声明的全局变量不能从全局对象中删除(至少按照规范:我认为旧的 IE 弄错了)。 kangax 文章有详细信息。【参考方案3】:
首先,这不是 delete 应该被使用的方式。您可以使用它从对象中删除属性,因此在您的情况下,您应该编写 delete window.MyDate
为什么应该是undefined
?你删除变量,因此你得到
错误:ReferenceError:MyDate 未定义
【讨论】:
以上是关于为啥在javascript中删除对象不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章
为啥onclick处理程序在javascript中与innerHTML一起使用时不起作用[重复]