Javascript 删除操作员混淆
因此,我发现这种技术是所有浏览器中全局.remove()方法的一种变通方法Javascript 删除操作员混淆,javascript,Javascript,因此,我发现这种技术是所有浏览器中全局.remove()方法的一种变通方法 a.outerHTML='';删除一个 a=您的元素 我的问题。。这让我非常困惑,因为它只在我使用outerHTML='';时起作用;。但是,delete操作符在这里说它只用于从对象中删除属性?所以,(这可能是一个愚蠢的问题),但当设置a.outerHTML时,会将其转换为可删除对象吗?怎么做 编辑:我几乎觉得我应该删除这个问题,因为它听起来可能很愚蠢,但我显然迷路了:delete操作符用于从对象中删除属性 var ob
a.outerHTML='';删除一个
a=您的元素
我的问题。。这让我非常困惑,因为它只在我使用outerHTML='';时起作用;。但是,delete操作符在这里说它只用于从对象中删除属性?所以,(这可能是一个愚蠢的问题),但当设置a.outerHTML时,会将其转换为可删除对象吗?怎么做
编辑:我几乎觉得我应该删除这个问题,因为它听起来可能很愚蠢,但我显然迷路了:
delete
操作符用于从对象中删除属性
var obj = {x: true};
console.log(obj) // {x: true}
delete obj.x;
console.log(obj); // {}
我强烈推荐以下参考:
在您的示例中:
a.outerHTML ='';
delete a;
delete
运算符与a.outerHTML=''的效果无关
这一行代码将自己用一些新的HTML替换DOM的部分。删除delete a
,第一行代码仍然会对您看到的DOM产生影响
事实上,在ES5严格模式下:
delete a;
将抛出一个语法错误。这就是这种行为是多么的出乎意料。是的,但它对元素有效(如果您使用outerHTML=''),这让我很困惑,因为它们在技术上不在对象中,对吗?例如,如果我只是在没有设置outerHTML=''的情况下删除了,它将不会删除。为什么呢?outerHTML对它做了什么使它如此特别?当您执行
a.outerHTML=“”)时,是否会将其临时转换为属性,然后转换为对象(这就是为什么delete可以工作的原因?)
,其效果与delete
运算符完全无关。这就是改变一个HTML块,它必然会改变DOM中的元素。这类似于x.innerHTML=“foo”
将删除x
的当前子对象,并在其位置创建新的DOM对象。所有这些都与delete
操作符无关。@NiCkNewman:所有操作都来自outerHTML
getter/setter,而不是delete
关键字。哇哦。是的,我刚刚删除了一个delete,我的脚本也在做同样的事情。哈哈。我知道我有一种奇怪的感觉,为什么这个删除操作符在这里。(我也会在@jfriend00查看该页面)谢谢!分配innerHTML
属性完全不会改变任何内容:。