我想知道javascript中的对象是否有可能在完成任务后自行删除。
例如,我有以下对象......
var myObject = Object.create(baseObject);
myObject.init = function() {
/* do some stuff... */
delete this;
};
myObject.init();
这有用吗?如果没有,还有另一种方式吗?
答案 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();