2014-04-03 65 views
1

如何在函数中销毁'this',以便从函数中销毁函数的实例。如果这不是纯粹的JavaScript可能。这是可能的原型?因此,像这样:用Javascript销毁'this'?

this = nil 

或类似的东西:

prototype.destroy(this) 

我不知道,如果原型或JavaScript有这样的内置东西。有没有我可以调用的函数会轻易地从实例外部销毁实例?

感谢

+2

你应该更完整的代码示例,以便我们理解“为什么”? –

+1

“this'究竟是什么,你不能销毁关键字,但你可能会根据它引用的内容销毁引用。而'nil' < - 真的吗? – adeneo

+1

http://stackoverflow.com/questions/2304860/can-an-object-automatically-delete-itself-in-javascript-once-it-has-achieved-its – Mosho

回答

2

你不能破坏的JavaScript this甚至试图这样做违背了事情是如何收集垃圾在JavaScript。另外,您无法在JavaScript中分配到this

你不会手动释放JavaScript中的东西。相反,你清除所有对JavaScript中的对象的引用,并且当其他代码没有对JavaScript中的对象的引用时,那么只有这样垃圾回收器才会释放它。

由于javascript不允许您将指针指定给this指针,因此当您将某个函数设置为特定对象时,您无法在该时刻以任何方式释放该对象。您可以确保没有其他对象具有对您的对象的引用,然后当此方法结束时,如果没有其他对象具有对该对象的引用,则它将由垃圾回收器释放。

垃圾收集系统中的内存管理与非垃圾收集语言完全不同。你不会自己解脱。您清除对事物的引用,以便GC可以稍后清理这些对象,除非没有其他引用。

下面是一个例子。假设你有这样的对象存储在一个全局变量的属性:

// declare global object and add property to it 
var myGlobalObject = {}; 
myGlobalObject.greeting = "Hello"; 

您从来都不是免费的全局变量明确,但如果你想它指向由垃圾收集器释放的对象,那么你只要清除参考对象:

myGlobalObject = null; 

然后,GC会看到有不再将具有与myGlobalObject用来指向并自该对象的对象的引用任何代码已经无法访问通过任何代码,它将被GC释放。