Присвоить свойство объекта другому без 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, время: 20:03. |