据我了解delete
运算符删除相应的引用,而不是通过此引用定位的对象。让我们有一个简单的对象并将delete
运算符应用于此属性之一,例如
var o= {prop: "property", test: "sometext"};
delete o.prop;
我们是否删除了"property"
字符串本身,或者我们仅删除了对此的引用,而"property"
字符串将被垃圾收集器删除为无引用。
答案 0 :(得分:2)
从技术上讲,是的,你删除了属性和值本身,因为它不再被引用,将被单独使用。
您可以通过让两个属性引用一个对象来检查:如果删除其他属性,则不会触及其中一个属性。
答案 1 :(得分:1)
下面这段代码将帮助您使用测试对象和console.log获得可视化结果,这样您就可以看到对象属性会发生什么。
删除前,当我们console.log(); obj.prop1,它会在你的控制台中说“哟”。 删除后,这将变为未定义。
你可以使用删除来清理未使用的属性,或者不再需要它们,这不是一个很大的速度提升,但是当你的网站通过便宜的机器查看时可能会有用。
<script type="text/javascript">
var obj = {
prop1: 'yo',
prop2: 'yo'
};
console.log(obj.prop1);
delete obj.prop1;
console.log(obj.prop1);
console.log(obj); //Will return only prop 2, prop1 is removed from the object.
</script>
<强> PS:强>
记录整个对象后,属性完全消失。
答案 2 :(得分:1)
根据its repsective MDN article,JavaScript中的delete
关键字“会从对象中删除属性。”也就是说,如果o.prop
引用了一个对象(而不是一个字符串),那么对该对象的引用(即o.prop
)将被删除,但是如果存在,则该对象可能会保留在内存中指向它的一些其他变量/属性。