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

时间:2010-02-21 05:13:57

标签: javascript oop

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

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

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

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

3 个答案:

答案 0 :(得分:49)

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

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

变量实际上是变量对象的属性,代码无法访问此对象,它位于范围链的前面,您可以在其中执行变量声明。

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

如果要实现此目的,则选项是 nullify 您的myObject实例,但这并不能保证另一个引用仍然指向该对象。

推荐讲座:

答案 1 :(得分:12)

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

答案 2 :(得分:5)

你可以尝试

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

namespace.myObject.init = function() {

   /* do some stuff... */

   delete window.namespace.myObject;

}

namespace.myObject.init();