我明白了:
var obj = {
foo: 'bar'
};
delete obj.foo;
将键/值对 foo
/'bar'
移除到 obj
对象。或者换句话说,它将对内容 'bar'
的引用释放到对象(意味着它将在某个时候被垃圾收集)。
我还可以写:
delete obj;
在幕后它是这样的:
delete window.obj;
离开 window
而不引用 obj
。
我不完全了解 this
关键字在 JS 中的工作原理,但我的观点是它是一个绑定(bind)到方法执行的对象。
但我不确定这样写是否有意义:
delete this;
- 从哪个对象中删除了引用?
- 如果我之后调用
return this;
会发生什么,它会是null
?
特别是我想销毁一个用 new
构建的对象:
function MyClass() = {
return this;
};
MyClass.prototype.destroy = function() {
delete this;
};
var myInstance = new MyClass();
myInstance.destroy();
myInstance
真的被删除了吗?是否释放了所有内存?
谢谢
最佳答案
Is
myInstance
really deleted? Is all the memory freed?
没有。 That's what delete
never did.
From which object does the reference is removed?
事实并非如此。 this
关键字不是属性引用 - 它的工作方式很像文字。该构造与 delete 0
一样有意义。
同样,局部变量不是属性引用;在严格模式下,当您尝试 delete
它们时,您会得到一个异常。我想知道为什么 delete this
也没有抛出。
关于javascript - 删除这个在 JS 中有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41265874/