Здравствуйте! Добро пожаловать в мой самый первый блог в качестве начинающего разработчика программного обеспечения — в настоящее время я учусь кодить в школе 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>")
Спасибо за прочтение!