Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.11.2015, 21:25
Интересующийся
Отправить личное сообщение для iwtn Посмотреть профиль Найти все сообщения от iwtn
 
Регистрация: 24.12.2013
Сообщений: 16

Присвоить свойство объекта другому без 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]
};
Ответить с цитированием
  #2 (permalink)  
Старый 19.11.2015, 21:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от iwtn
Как можно объекту obj2 присвоить конкретное свойство из obj1 программно(т.е. я названия свойств заранее не знаю).
а в каком виде вы эти названия получаите?
Ответить с цитированием
  #3 (permalink)  
Старый 19.11.2015, 22:04
Интересующийся
Отправить личное сообщение для iwtn Посмотреть профиль Найти все сообщения от iwtn
 
Регистрация: 24.12.2013
Сообщений: 16

Сообщение от рони Посмотреть сообщение
а в каком виде вы эти названия получаите?
В виде входящего json объекта.
Ответить с цитированием
  #4 (permalink)  
Старый 19.11.2015, 22:07
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

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>
Ответить с цитированием
  #5 (permalink)  
Старый 19.11.2015, 22:14
Интересующийся
Отправить личное сообщение для iwtn Посмотреть профиль Найти все сообщения от iwtn
 
Регистрация: 24.12.2013
Сообщений: 16

Я же говорю я не знаю свойств объекта
и вот так fromObjToObj2(obj, obj2,'age','student'); не могу сделать.
Т.е. для меня входящий объект obj как чёрный ящик. Я могу его свойства просмотреть но названий их у меня нет. Такова задача.
Есть другие способы кроме eval в этом случае или нет?
Ответить с цитированием
  #6 (permalink)  
Старый 19.11.2015, 22:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

iwtn,
напишите как вы делаите с помощью eval ?
Ответить с цитированием
  #7 (permalink)  
Старый 22.11.2015, 10:21
Интересующийся
Отправить личное сообщение для iwtn Посмотреть профиль Найти все сообщения от iwtn
 
Регистрация: 24.12.2013
Сообщений: 16

objTo[key] = objFrom[key]
Да, вот так. В этом случае название нового свойства будет таким, что хранит переменная key. Чё то я немного не врубился сначала.
Думал что новое свойство можно назначить только через точку вот так: objTo.key=objFrom[key]; но в этом случае создастся новое свой-во с ключом "key" а не с тем что хранит переменная key.

Короче вот эти 2 варианта:
objTo.key=objFrom[key]
objTo[key]=objFrom[key]
работают принципиально по-разному.

Всё, вопрос закрыт. Спасибо Mess4me.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CSS свойство "content" без before и after. ruslan_mart (X)HTML/CSS 5 01.10.2013 19:28
Как одной функции присвоить другую с параметрами без ее вызова dmitryck Общие вопросы Javascript 23 16.06.2012 22:35
Вычисление значения выражения без eval Matre Общие вопросы Javascript 6 19.11.2011 12:04
Свойства объекта, методы и this. Почему свойство вызывается с () ? jsuse Общие вопросы Javascript 2 04.11.2011 20:39
evalScripts без regexp и eval Diem Events/DOM/Window 1 30.07.2009 17:34