一旦达到目的,对象是否可以在javascript中自动删除自身?

Tra*_*vis 47 javascript oop

我想知道javascript中的对象是否有可能在完成任务后自行删除.

例如,我有以下对象......

var myObject = Object.create(baseObject);
myObject.init = function() {
  /* do some stuff... */
   delete this;
};
myObject.init();
Run Code Online (Sandbox Code Playgroud)

这有用吗?如果没有,还有另一种方式吗?

CMS*_*CMS 53

这不起作用,首先是因为this与执行上下文关联的值是不可变的.

您现在可能认为删除myObject(by delete myObject;)可能有效,但也不会这样做.

变量实际上是变量对象的属性,这个对象不能被代码访问,它只是在范围链的前面,您可以在其中执行变量声明.

Variable语句使用该{ DontDelete }属性创建这些属性,这会导致delete运算符失败.

如果你想达到这样的一个选项是抵消你的myObject情况,但也不至于另一个引用仍然指向该对象的保证.

推荐讲座:


Ign*_*ams 13

No. this只是对象的本地引用,因此删除它不会使对象不存在.对象无法以这种方式自毁.如果你有大型物体,你认为应该在之后删除,那么你应该看看使用Facade或Strategy模式.


Pat*_*ick 6

你可以试试

window.namespace.myObject = Object.create(baseObject);

namespace.myObject.init = function() {

   /* do some stuff... */

   delete window.namespace.myObject;

}

namespace.myObject.init();
Run Code Online (Sandbox Code Playgroud)