Javascript 删除在JS中有意义吗?

Javascript 删除在JS中有意义吗?,javascript,Javascript,我明白: var obj = { foo: 'bar' }; delete obj.foo; 将配对键/值foo/'bar'删除到obj对象。或者换言之,它将对内容'bar'的引用释放到对象(这意味着它将在某个点被垃圾收集) 我还可以写: delete obj; delete obj; 在幕后,情况是这样的: delete window.obj; delete window.obj; 离开窗口而不引用obj 我不完全了解JS中的this关键字是如何工作的,但我认为它是绑定到方法执

我明白:

var obj = {
  foo: 'bar'
};

delete obj.foo;
将配对键/值
foo
/
'bar'
删除到
obj
对象。或者换言之,它将对内容
'bar'
的引用释放到对象(这意味着它将在某个点被垃圾收集)

我还可以写:

delete obj;
delete obj;
在幕后,情况是这样的:

delete window.obj;
delete window.obj;
离开
窗口
而不引用
obj

我不完全了解JS中的
this
关键字是如何工作的,但我认为它是绑定到方法执行的对象

但我不确定这样写是否有意义:

delete this;
  • 从哪个对象删除引用
  • 如果我调用
    返回该值,会发生什么情况之后,它将是
    null

尤其是我试图破坏一个用
new
构建的对象:

function MyClass() = {
  return this;
};

MyClass.prototype.destroy = function() {
  delete this;
};

var myInstance = new MyClass();
myInstance.destroy();
myInstance
真的被删除了吗?所有的内存都被释放了吗

谢谢

myInstance
真的被删除了吗?所有的内存都被释放了吗

没有

从哪个对象删除引用

事实并非如此。
this
关键字不是一个属性引用-它的工作原理相当像一个文本。该构造的意义与
delete 0的意义相同

类似地,局部变量没有属性引用;在严格模式下,当您尝试
删除它们时,会出现异常。我想知道为什么
删除这个
也不会抛出

我还可以写:

delete obj;
delete obj;
在幕后,情况是这样的:

delete window.obj;
delete window.obj;
不,你不能,也不能。它什么也不做

var obj={
福:“酒吧”
};
删除obj;

控制台日志(obj)你为什么要这么做?你想解决什么样的问题?垃圾收集器在99%的情况下自动工作此代码甚至不编译。@DanLowe不编译?什么?
函数MyClass()={}
无效,它抛出语法错误