如何删除 JavaScript 中的对象?
How to delete an object in JavaScript?
我有一个创建对象的函数,我想删除它。
我看到了这个 post :
Deleting Objects in JavaScript
但是我没有创造条件删除它。
class setBackgroundColor {
constructor (element, options) {
this.element = element;
this.options = options;
this.element.style.backgroundColor = this.options;
}
}
function onWindowResize () {
let mobile = window.innerWidth < 800
if (mobile) {
new setBackgroundColor(document.querySelector('.my_container'), "red")
// var newObjet = new setBackgroundColor(document.querySelector('.my_container'), "red")
} else {
return
// delete newObjet
}
}
onWindowResize ();
window.addEventListener('resize', onWindowResize);
.my_container{
margin: 30px;
width: 100px;
height: 100px;
border: 1px solid black;
}
<div class="my_container"></div>
删除对象的唯一方法是删除它的所有引用。
您调用 setBackgroundColor
创建的对象几乎立即被删除,因为您从未保留对它的引用。
如果您要取消注释从 \ var newObjet
开始的行,那么它仍然会几乎立即被删除,因为函数将完成并且变量将退出范围。
我认为你想要做的是删除你所做的背景颜色设置。
那不是对象的一部分。执行此操作的函数只是附加到对象,但更改的是您传入的 element
,而不是对象本身。
如果您想将背景颜色更改为其他颜色,那么您需要明确地这样做。
else {
document.querySelector('.my_container').style.backgroundColor = "";
就是说,如果您想根据 window 大小更改某些内容的样式,请使用 the media query feature built into CSS。
比搜索DOM和用JS修改样式省事多了
delete
命令对常规变量没有影响,只有属性。
let x = {a:"a"};
delete x; //won't work
delete x.a; // works
删除它的唯一方法是取消引用它。
我有一个创建对象的函数,我想删除它。 我看到了这个 post : Deleting Objects in JavaScript 但是我没有创造条件删除它。
class setBackgroundColor {
constructor (element, options) {
this.element = element;
this.options = options;
this.element.style.backgroundColor = this.options;
}
}
function onWindowResize () {
let mobile = window.innerWidth < 800
if (mobile) {
new setBackgroundColor(document.querySelector('.my_container'), "red")
// var newObjet = new setBackgroundColor(document.querySelector('.my_container'), "red")
} else {
return
// delete newObjet
}
}
onWindowResize ();
window.addEventListener('resize', onWindowResize);
.my_container{
margin: 30px;
width: 100px;
height: 100px;
border: 1px solid black;
}
<div class="my_container"></div>
删除对象的唯一方法是删除它的所有引用。
您调用 setBackgroundColor
创建的对象几乎立即被删除,因为您从未保留对它的引用。
如果您要取消注释从 \ var newObjet
开始的行,那么它仍然会几乎立即被删除,因为函数将完成并且变量将退出范围。
我认为你想要做的是删除你所做的背景颜色设置。
那不是对象的一部分。执行此操作的函数只是附加到对象,但更改的是您传入的 element
,而不是对象本身。
如果您想将背景颜色更改为其他颜色,那么您需要明确地这样做。
else {
document.querySelector('.my_container').style.backgroundColor = "";
就是说,如果您想根据 window 大小更改某些内容的样式,请使用 the media query feature built into CSS。
比搜索DOM和用JS修改样式省事多了
delete
命令对常规变量没有影响,只有属性。
let x = {a:"a"};
delete x; //won't work
delete x.a; // works
删除它的唯一方法是取消引用它。