我对JavaScript比较陌生,并试图学习其基础知识。我试图做一个用户定义的函数,它将删除未使用var关键字声明的对象。但是我被这种怪异的行为困住了。
globalObj = {f:56};
Object.deleteObject = function(o){
return delete o;
}
Object.deleteObject(globalObj); //false
因此,在上述情况下,不会删除对象。但是,当我使用对窗口对象的引用删除它时,它将被删除。
Object.deleteObject = function(o){
return delete window[o];
}
Object.deleteObject("globalObj"); //true
有人可以解释这里发生了什么吗?
答案 0 :(得分:0)
delete
不会删除对象,而是会删除对象的属性。在第一个示例中,您没有从任何对象中删除对象,因此它无法正常工作。在第二个示例中,如果该对象还有其他引用,则该对象之后可能仍然存在,您只需删除引用该对象的window
的属性。