使用JavaScript中的用户定义函数删除对象

时间:2018-07-08 16:24:48

标签: javascript scope javascript-objects

我对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

有人可以解释这里发生了什么吗?

1 个答案:

答案 0 :(得分:0)

delete不会删除对象,而是会删除对象的属性。在第一个示例中,您没有从任何对象中删除对象,因此它无法正常工作。在第二个示例中,如果该对象还有其他引用,则该对象之后可能仍然存在,您只需删除引用该对象的window的属性。