новичок: как очистить объект в JavaScript? - PullRequest
1 голос
/ 16 мая 2011

Если у меня есть объект:

var myobj={name: 'Some Value',
           id: 'my id',
           address: 'my address'
           ...}

myobj был расширен динамически, на myobj[custom_attribute]=SOME_VALUE

Я хотел бы очистить этот объект, чтобы иметь пустой атрибут, этоmyobj = {}, как это сделать?(Я не хочу использовать цикл for для очистки атрибута один за другим)

Ответы [ 6 ]

4 голосов
/ 16 мая 2011

так что вы хотите присвоить myobj = {}, чтобы сделать его пустым? Простите, если я неправильно прочитал ваш вопрос, но мне кажется, вы хотите сделать

myobj={};
4 голосов
/ 16 мая 2011

Установить myobj для пустого объекта,

myobj = {};
4 голосов
/ 16 мая 2011

Что не так с

myobj = {};

или

myobj = new Object();

2 голосов
/ 16 мая 2011

Самый быстрый / простой способ сделать это:

myobj = {};
0 голосов
/ 19 июня 2019

Одна строка:

Object.keys(obj).forEach( k => delete obj[k])
0 голосов
/ 23 января 2016

Другие ответы хороши, если вы не редактируете объект по ссылке. Однако, если вы передаете объект в функцию и хотите, чтобы исходный объект также был затронут, вы можете использовать эту функцию:

function emptyObject(objRef) {
    for(var key in objRef) {
        if(objRef.hasOwnProperty(key)) {
            delete objRef[key];
        }
    }
}

Это поддерживает исходную ссылку на объект и подходит для создания плагинов, когда вы управляете объектом, который предоставляется в качестве параметра. Два быстрых примера покажут, как это отличается от простого задания объекта равным {}

EX 1:

function setEmptyObject(obj) {
    obj = {};
}
var a = {"name":"Tom", "site":"http://mymusi.cc"}
setEmptyObject(a);
console.log(a); //{"name":"Tom", "site":"http://mymusi.cc"}

EX 2 с использованием альтернативы emptyObject () (функция определена выше):

var a = {"name":"Tom", "site":"http://mymusi.cc"}
emptyObject(a);
console.log(a); //{}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...