2016-06-29 8 views
0

В функции «superSecret» «шпион» будет передан как объект, представляющий шпиона. Я хочу перебрать все свойства объекта-шпиона и изменить все значения на строку «redacted», а затем вернуть обновленный объект-шпион. Может кто-нибудь посмотреть на мой код и помочь мне собрать это вместе, пожалуйста?Изменение значений объекта внутри функции

var superSecret = function(spy){ 
    for(var i = 0; i < spy.length; i++) { 
    "redacted" 
    return 
} 

var jamesBond = { 
    eye: "brown", 
    hair: "black", 
    gun: "goldenGun", 
} 

ответ

3

В объектах Javascript передаются по ссылке, так что вы на самом деле не событие нужно вернуть объект:

var superSecret = function(spy){ 
 
    Object.keys(spy).forEach(function(key){ 
 
    spy[key] = 'redacted'; 
 
    }); 
 
} 
 

 
var jamesBond = { 
 
    eye: "brown", 
 
    hair: "black", 
 
    gun: "goldenGun", 
 
} 
 

 
superSecret(jamesBond); 
 

 
console.log(jamesBond);

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

var superSecret = function(spy){ 
 
    var redacted = {}; 
 
    Object.keys(spy).forEach(function(key){ 
 
    redacted[key] = 'redacted'; 
 
    }); 
 
    return redacted; 
 
} 
 

 
var jamesBond = { 
 
    eye: "brown", 
 
    hair: "black", 
 
    gun: "goldenGun", 
 
} 
 

 
var unknownHero = superSecret(jamesBond); 
 

 
console.log(jamesBond); 
 
console.log(unknownHero);

Смежные вопросы