Первая запись в блоге… когда-либо {объектные указатели}

Здравствуйте! Добро пожаловать в мой самый первый блог в качестве начинающего разработчика программного обеспечения — в настоящее время я учусь кодить в школе Flatiron. Я собираюсь использовать этот блог для отслеживания своего роста и прогресса в мире кодинга.

Полное раскрытие: я, вероятно, знаю о кодинге примерно столько же, сколько начинающий водитель знает о том, что находится под капотом его автомобиля. Я просто знаю, как добраться из точки А в точку Б — заставить код делать то, что я хочу — но ничего о том, как заставить машину использовать бензин более эффективно или какие детали она вообще использует.

Чтобы получить представление о том, на каком этапе я нахожусь, я недавно понял одну вещь, которая стала для меня большим шагом вперед, — это возможность присвоить переменную уже определенному объекту (как указатель), чтобы внести изменения в этот объект в другой области видимости.

Для примера:

let variable = {}; /* first, globally defining an empty object to
be used later */

/* The "parent function" that defines an object in it's own
scope and calls the function passed in as an argument to modify
said object */
function parentFunction(functionName) {
    const dataObj = {
        key1: "I want to change this value.",
        key2: "I want to keep this value.",
    };

    variable = dataObj; /* re-assigning (or pointing) our empty
object to the defined object */

    functionName(variable); /* calling the callback function and
passing our variable to be updated */

    console.log(dataObj); /* this is just to see what's in our
defined object after the callback function's been called */
};

//Callback function that changes a value of an object
function callbackFunction(object) {
    object.key1 = "This value has been changed.";
};

parentFunction(callbackFunction); //invoking the parent function
Войти в полноэкранный режим Выйти из полноэкранного режима

Затем в журнале консоли мы увидим, что наш определенный объект был обновлен до:

{
  key1: 'This value has been changed.',
  key2: 'I want to keep this value.'
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Обратите внимание: аргументом, который был передан в функцию обратного вызова, была переменная variable, а не реальный dataObj. Однако изменения сохранялись в dataObj, потому что переменная действует как указатель, а не как отдельный объект. Это был прорыв для меня, так как мысль пришла мне в голову, когда я пытался заснуть одной случайной ночью. Надеюсь, это будет полезно всем новым разработчикам, которые с этим столкнутся!

Также, небольшое примечание о еще одном приеме, который я узнал:
Чтобы заменить символ space в строке на другой символ, просто используйте:

string.replace(/s/g,"<add character you want to replace with>")
Войти в полноэкранный режим Выйти из полноэкранного режима

Спасибо за прочтение!

Оцените статью
devanswers.ru
Добавить комментарий