Как добавить значение ключа в объект, который находится в отдельной функции? - PullRequest
0 голосов
/ 08 января 2020

У меня есть эта функция:

     function TrackEvent(eventName, eventProperties) {
        eventProperties = {};
        eventProperties["history_section"] = "history"; 
        // Do something         
     }

И позже у меня есть эта функция:

function TrackHistoryChanges() { 
    $('btn').click(function () {
        eventProperties = {};
        eventProperties["updated_history"] = getHistory();
        TrackEvent("save changed", eventProperties); 
    })
}

Моя цель - добавить свойства из второй функции в объект свойств события в первая функция (вместо того, чтобы сбрасывать ее каждый раз, когда вызывается первая функция) с целью дальнейшего добавления в коде в зависимости от того, какие кнопки нажимаются.

Я новичок в Javascript и не могу понять, как добавить ADD в существующий объект eventProperties с помощью моей второй функции. Пожалуйста, кто-нибудь может указать мне правильное направление?

Ответы [ 2 ]

0 голосов
/ 08 января 2020

Вам необходимо удалить сброс переменной eventProperties в функции TrackEvent. В javascript объекты передаются по ссылке. Вы можете прочитать больше об этом на носителе: Передать по ссылке в JavaScript.

Так что фиксированный код:

function TrackEvent(eventName, eventProperties) {
    // Add new value to the object
    eventProperties["history_section"] = "history"; 
    // Do something
}

function TrackHistoryChanges() { 
    $('btn').click(function () {
        var eventProperties = {};
        eventProperties["updated_history"] = getHistory();
        TrackEvent("save changed", eventProperties); 
    })
}
0 голосов
/ 08 января 2020

Я думаю, что нам нужно больше информации о том, где эти функции живут, они находятся в одном файле? Вы делаете какой-либо импорт / экспорт, используя веб-пакет для создания какого-либо пакета?

Короткий ответ, не зная всего этого, состоит в объявлении переменной eventProperties где-то за пределами обеих этих функций, чтобы к ней могли обращаться обе:

const eventProperties = {};

function trackEvent() {
  eventProperties.history_section = 'history';
}

function trackHistoryChanges() {
  ...etc
}

, существуют другие подходы вы можете взять, но все зависит от того, как ваши файлы настроены. Если вы хотите, чтобы eventProperties сохранялись на протяжении всего жизненного цикла веб-сеанса, вы также можете сохранить eventProperties в объекте глобального окна:

window.eventProperties = {};

, чтобы вы могли получить к нему доступ из любого из ваших файлов

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