Присвоить свойство объекта другому без eval
Привет.
Есть объект. К примеру: var obj={ student: "Vasya"; age: 19 some_prop: [1,2,3] some_prop2: {} } и пустой: var obj2={}; Как можно объекту obj2 присвоить конкретное свойство из obj1 программно(т.е. я названия свойств заранее не знаю). Но НЕ через Eval и не копированием объекта целиком, а потом удалением не нужного. Есть какой-то другой способ? Результат должен быть к примеру такой: var obj2={ age: 19 some_prop: [1,2,3] }; |
Цитата:
|
Цитата:
|
iwtn,
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> var obj = { student: "Vasya", age: 19, some_prop: [1, 2, 3], some_prop2: {} }; var obj2 = { }; function fromObjToObj2(objFrom, objTo){ for(var i = 2;i<arguments.length;i++){ for(var key in objFrom){ if(key == arguments[i]){ objTo[key] = objFrom[key] } } } } fromObjToObj2(obj, obj2,'age','student'); alert(JSON.stringify(obj2)) </script> </body> </html> |
Я же говорю я не знаю свойств объекта
и вот так fromObjToObj2(obj, obj2,'age','student'); не могу сделать. Т.е. для меня входящий объект obj как чёрный ящик. Я могу его свойства просмотреть но названий их у меня нет. Такова задача. Есть другие способы кроме eval в этом случае или нет? |
iwtn,
напишите как вы делаите с помощью eval ? |
objTo[key] = objFrom[key]
Да, вот так. В этом случае название нового свойства будет таким, что хранит переменная key. Чё то я немного не врубился сначала. Думал что новое свойство можно назначить только через точку вот так: objTo.key=objFrom[key]; но в этом случае создастся новое свой-во с ключом "key" а не с тем что хранит переменная key. Короче вот эти 2 варианта: objTo.key=objFrom[key] objTo[key]=objFrom[key] работают принципиально по-разному. Всё, вопрос закрыт. Спасибо Mess4me. |
Часовой пояс GMT +3, время: 19:56. |