删除对象';在JavaScript中,在object的函数中引用自身
我想通过从对象集合中移除对象本身的函数。若我像下面这样编写代码,那个么它会指向引用循环或任何其他错误删除对象';在JavaScript中,在object的函数中引用自身,javascript,object,reference,reference-cycle,Javascript,Object,Reference,Reference Cycle,我想通过从对象集合中移除对象本身的函数。若我像下面这样编写代码,那个么它会指向引用循环或任何其他错误 const obj_collec={}; 功能对象(id){ 这个.id=id; this.remove=function(){ 删除对象集合[this.id] } } obj_collec['obj1']=新obj('obj1'); 控制台日志(obj_collec) obj_collec['obj1'].移除(); log(obj_collec)“但是我想知道如果我像上面那样编码会发生什么
const obj_collec={};
功能对象(id){
这个.id=id;
this.remove=function(){
删除对象集合[this.id]
}
}
obj_collec['obj1']=新obj('obj1');
控制台日志(obj_collec)
obj_collec['obj1'].移除();
log(obj_collec)
“但是我想知道如果我像上面那样编码会发生什么。”没有什么特别的。它只是工作。这是一个有点奇怪的代码,但在语法和功能上都没问题。它只会将对象从obj_colec
中删除,并使其符合正常的垃圾收集条件。@VLAZ它不会导致引用循环吗?为什么会这样?您正在调用delete obj_collec['obj1']
,就这样。当方法执行时,对象实例仍被引用,但当堆栈清除时(在方法结束后),就不再有对该对象的其他引用了。@VLAZ感谢您的解释。我现在明白了。你期望什么样的参考周期,这会有什么问题?当然,如果没有remove
方法,newobj
将不会引用它所属的Obj\u collect
,但我不知道这有什么关系。“但我想知道,如果我像上面那样编码会发生什么。”没有什么特别的。它只是工作。这是一个有点奇怪的代码,但在语法和功能上都没问题。它只会将对象从obj_colec
中删除,并使其符合正常的垃圾收集条件。@VLAZ它不会导致引用循环吗?为什么会这样?您正在调用delete obj_collec['obj1']
,就这样。当方法执行时,对象实例仍被引用,但当堆栈清除时(在方法结束后),就不再有对该对象的其他引用了。@VLAZ感谢您的解释。我现在明白了。你期望什么样的参考周期,这会有什么问题?当然,如果没有remove
方法,newobj
将不会引用它所属的Obj\u collect
,但我不知道这有什么关系。