Подтвердить что ты не робот

Прохождение через свойства объекта Javascript

Я хочу пройти через свойство объекта JavaScript

    var obj =
    {
        a: 'value1',
        b: 'value2',
        c: 'value3',
        d: 'value4'
    };

    for (var prop in obj) {
        prop = 'xxx';
    }

Но приведенный выше код не работает. Можете ли вы помочь мне, как это сделать?

4b9b3361

Ответ 1

prop будет ссылаться на имя свойства, а не на его значение.

for (var prop in obj) {
    obj[prop] = 'xxx';
}

Создать документацию.

Также вы можете проверить, принадлежит ли свойство объекту с помощью hasOwnProperty. Может случиться так, что кто-то добавляет свойства прототипу, а также тегируются с помощью for ... in.

Ответ 2

Вы должны проверить, принадлежит ли это свойство объекту, а не прототипу.

for (var prop in obj) {
    if (obj.hasOwnProperty(prop)) {
        obj[prop] = 'xxx';
    }
}

Ответ 4

Если вы находитесь в дружественной среде ES6, вы также можете попробовать использовать цикл for..., который ближе к вашей первоначальной попытке.

EDIT: Как отметил Калеб, for..of специфичен для коллекций с свойством Symbol.iterator(например, не для стандартных объектов JS).

Но я оставляю этот ответ здесь, если кто-то еще найдет полезным в какой-то момент, чтобы он явно указал, что for..of не является отличным решением здесь.

let obj = {};

for (let prop of obj) { // This will throw an error
    prop = 'xxx';
}

Ссылка: MDN - для....