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()={}
无效,它抛出语法错误