Динамическое создание объекта JS - PullRequest
0 голосов
/ 29 августа 2011

Я переписываю проект с жестко закодированными значениями, чтобы он был гибким и динамичным.Тем не менее, я продолжаю сталкиваться с проблемами.

Я написал большую часть своего кода JS сейчас, но обнаружил пару ошибок, которые не могу исправить, поэтому решил начать с нуля.Теперь я думал поместить свои данные в объект, который отслеживает итоги.Проект в основном позволяет людям заказывать билеты, отели и т. Д. На событие.

Однако, как я уже говорил, раньше это было жестко закодировано.Теперь он должен быть гибким, и я не уверен, возможно ли динамическое создание объекта?Вот моя проблема:

Объект, который я использовал, был следующим:

var total = {   amount: 0,
            tickets: 0,
            passes: 0,
            fri: 0,
            sat: 0,
            sun: 0,
            freecarpass: 0,
            freepass_fri: 0,
            freepass_sat: 0,
            freepass_sun: 0,
            passes_fri: 0,
            passes_sat: 0,
            passes_sun: 0,
            passes_totalPurchase: 0
        };

Как видите, дни жестко закодированы.Однако в новой системе каждое событие будет иметь разные дни, поэтому я должен иметь возможность строить свой объект на основе этого, если это имеет смысл.

Например, если событие проходит со среды по субботу, дни в объекте будут:

wed: 0, thu: 0, fri: 0, sat: 0 

и т. д.

Я не уверен, как этого добиться, если это вообще возможно?Я могу предоставить больше кода проекта, если это необходимо.Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 29 августа 2011

Вы можете добавить новые свойства на лету:

total.wed = 0;

или

total["wed"] = 0;
1 голос
/ 29 августа 2011

Хотя я не уверен, что это лучший способ решить вашу проблему, да, вы можете добавлять или удалять свойства объекта по своему усмотрению в Javascript. По сути, объекты JS являются просто парами ключ-значение Таким образом, вы могли бы начать с объекта, которым будут делиться все дни, что-то вроде этого:

var total = {  
    amount: 0,
    tickets: 0,
    passes: 0
};

Затем вы можете добавить свойство, просто присвоив ему значение, например:

total.sat = 3;
total.sun = 1;

У W3Schools более длинное объяснение этого здесь.

0 голосов
/ 29 августа 2011

Да, в javascript вы можете делать много вещей с объектами.

Чтобы добавить новое свойство к объекту, просто выполните total["nameofyourday"]=0;

Таким образом, если вы хотите динамически изменить значение «nameofyourday», вы можете поместить переменную, содержащую строку в скобках. Вот так:

var day="wed";
total[day]=0;

, и в результате значение total.wed будет равно 0.

Я думаю, что для обеспечения более конкретной реализации потребуется больше кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...