๐Ÿ‘ฉ‍๐Ÿ’ป 93

[JavaScript] ํ•จ์ˆ˜ ์ƒ์„ฑ์ž์™€ ํด๋ž˜์Šค์˜ ์ฐจ์ด

ํ•จ์ˆ˜ ์ƒ์„ฑ์ž(Constructor Functions)๋ž€? ํ•จ์ˆ˜ ์ƒ์„ฑ์ž๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋Š” 'ํด๋ž˜์Šค'์™€ ๋™์˜์–ด๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ ์‚ฌ๋žŒ๋“ค์€ ์ฐธ์กฐ ํƒ€์ž…(Reference Types), ํด๋ž˜์Šค(Classes), ๋ฐ์ดํ„ฐ ํƒ€์ž…, ์•„๋‹ˆ๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ์„ฑ์ž๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํด๋ž˜์Šค์— ์•„์ง ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋ฉด, ์–ด๋–ค ์†์„ฑ(properties)๊ณผ ํ–‰๋™(functions)์„ ์ •์˜ํ•˜๋„๋ก ํ•ด์ฃผ๊ณ , ๊ทธ ์†์„ฑ๊ณผ ํ–‰๋™์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์ƒ์„ฑ์ž๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค. ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋กœ์„œ ์ง‘์„ ์ง“๊ธฐ ์œ„ํ•œ ์ฒญ์‚ฌ์ง„์ด๋ผ๋Š” ๋น„์œ ๋ฅผ ๋งŽ์ด ํ•œ๋‹ค. ์—ฌ๋Ÿฌ ์ง‘์ด ๋‹จ ํ•˜๋‚˜์˜ ์ฒญ์‚ฌ์ง„์œผ๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋„ ๋‹จ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค. function Person(name, position) { this.name ..

[JavaScript] ์ฝœ์Šคํƒ, ์ฝœ๋ฐฑํ, ์ด๋ฒคํŠธ ๋ฃจํ”„์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ํ†ตํ•œ ๋น„๋™๊ธฐ ํ•จ์ˆ˜์˜ ์‹คํ–‰ ๊ณผ์ •

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋‹น์—ฐํžˆ ์˜์‹ฌ ์—†์ด ์‚ฌ์šฉํ•˜๋˜ ๋น„๋™๊ธฐ ํ•จ์ˆ˜ ์‹คํ–‰ ๊ณผ์ •์„ ๋“ค์—ฌ๋‹ค๋ณผ ๊ธฐํšŒ๊ฐ€ ์ƒ๊ฒผ๋‹ค. ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ์–ธ์–ด์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํ•œ ์ค„ ํ•œ ์ค„ ์ˆœ์„œ๋Œ€๋กœ ๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋ฉฐ, ๋‘ ๊ฐ€์ง€ ์ด์ƒ์˜ ํƒœ์Šคํฌ๋ฅผ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์–ด์•ผ ํ•˜๋Š”๋ฐ, setTimeout์ด๋‚˜ ์›น API, ES6์˜ promise ๊ฐ™์€ ๋น„๋™๊ธฐ ์ฝœ๋ฐฑ์€ ์–ด๋–ป๊ฒŒ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ผ๊นŒ? ์šฐ์„  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋‘ ๊ฐ€์ง€ ์ด์ƒ์˜ statements๊ฐ€ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์€ ๋งž๋‹ค. ์‹คํ–‰์€ ํ•ญ์ƒ ๋™๊ธฐ์ ์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„ V8์€ ํ”„๋กœ๊ทธ๋žจ ๋‚ด ๋ชจ๋“  ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ผ์–ด๋‚˜๋Š” Memory Heap๊ณผ ์Šคํƒ ํ”„๋ ˆ์ž„์ด ์Œ“์ด๋Š” ์ฝœ ์Šคํƒ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ  ์ด ์ฝœ ์Šคํƒ(ํ˜ธ์ถœ ์Šคํƒ)์ด ํ•˜๋‚˜์ด๋ฏ€๋กœ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์ด๋‹ค. ํ•˜์ง€๋งŒ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ธŒ๋ผ์šฐ์ €..

[JavaScript] ์—„๊ฒฉ ๋ชจ๋“œ (use strict)

์—„๊ฒฉ ๋ชจ๋“œ๋Š” ES5์— ๋„์ž…๋œ ๋ฌธ๋ฒ•์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ตœ์ƒ๋‹จ์— use strict ๋ฌธ๊ตฌ๋ฅผ ๋„ฃ์–ด ์‹คํ–‰ํ•œ๋‹ค. ๋˜๋Š” ํ•จ์ˆ˜ ๋‚ด์—์„œ๋„ ์ž‘์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค. ์—„๊ฒฉ ๋ชจ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์—๋Š” ๊ด€์šฉ์ ์œผ๋กœ ๋Š์Šจํ•˜๊ฒŒ ํ—ˆ์šฉ๋˜๋Š” '์˜ค๋ฅ˜๋ฅผ ์œ ๋ฐœํ•  ๊ฐ€๋Šฅ์„ฑ ์žˆ๋Š” ๋ฌธ๋ฒ•' ๋•Œ๋ฌธ์— ๋””๋ฒ„๊น…์ด ์–ด๋ ค์šด ์š”์ธ์ด ๋˜๊ณค ํ–ˆ๋‹ค. strict mode๋ฅผ ์‹คํ–‰ํ•ด์ฃผ๋ฉด ๋ฏธ๋ฆฌ ํ•ด๋‹น ์—๋Ÿฌ๋ฅผ ์ถœ๋ ฅํ•ด์„œ ๋ฐ”๋กœ์žก์„ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ์—…๋ฐ์ดํŠธ ๋  ์ƒˆ๋กœ์šด ๋ช…์„ธ์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋Œ€์‘ํ•˜๊ธฐ๋„ ํŽธํ•˜๊ณ , ์ตœ์ ํ™” ์ด์Šˆ์—๋„ ๋„์›€์ด ๋˜์–ด์„œ use strict๋ฅผ ์‚ฌ์šฉ์ด ๊ถŒ๊ณ ๋œ๋‹ค. ๋ฆฌ์•กํŠธ, ๋ทฐ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ž๋™์œผ๋กœ ์—„๊ฒฉ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค˜์„œ ํฌ๊ฒŒ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•˜์ง€๋งŒ, ๋ฐ”๋‹๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๋•Œ๋Š” ์ถ”๊ฐ€ํ•ด์ฃผ๋Š” ์Šต๊ด€์ด ์ข‹๊ฒ ๋‹ค. ๋ณดํ†ต npx๋กœ CRA์„ ํ•˜๊ณ  ๋‚˜๋ฉด ์•„..

[JavaScript] call, apply and bind

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ํ•จ์ˆ˜๋„ ๊ฐ์ฒด๋กœ ๋‹ค๋ค„์ง„๋‹ค. call(), apply(), bind()๋Š” ๋ชจ๋‘ ํ•จ์ˆ˜ ์‹คํ–‰์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์†Œ๋“œ์ด๋‹ค. call()๊ณผ apply()๋Š” ES5์— ๋„์ž…๋œ ๋ฌธ๋ฒ•์ด๊ณ  bind()๋Š” ๊ทธํ›„ ES5์— ๋„์ž…๋˜์—ˆ๋‹ค. ํ•จ์ˆ˜๋ฅผ ์ฆ‰์‹œ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•  ๋•Œ๋Š” call()๊ณผ apply()๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , bind()๋Š” ๋‚˜์ค‘์— bound๋œ ํ•จ์ˆ˜๋ฅผ ๋ฆฌํ„ด ๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ดํ›„์— ์‹คํ–‰๋  ํ•จ์ˆ˜๋ฅผ ์ƒ๊ฐํ•˜๋ฉฐ ์จ์•ผ ํ•œ๋‹ค. const user = { name: 'Hannah' } const profile = function (location, language) { return `${this.name} is a ${language} programmer, who lives in ${location}`; } consol..

[CSS] position์˜ ์ดํ•ด. static/relative/absolute/fixed ๊ทธ๋ฆฌ๊ณ  sticky.

CSS ์†์„ฑ ์ค‘ fixed์™€ sticky ํ™œ์šฉ์„ ์ž˜ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„์„œ, ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ ๊ฒ€์šฉ์œผ๋กœ ๋˜ ๋ฉด์ ‘ ์ค€๋น„์šฉ์œผ๋กœ ๊ธฐ๋ก์„ ๋‚จ๊ฒจ๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์šฐ์„  CSS์˜ position property์—๋Š” static, relative, absolute, fixed, sticky ๋‹ค์„ฏ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. CSS์˜ ๊ฐ ์†์„ฑ์€ top, right, left, bottom์˜ ์†์„ฑ์— ๊ฐ’์„ ๋„ฃ์–ด ์ตœ์ข…์ ์œผ๋กœ ๋ฌธ์„œ ๋‚ด ์š”์†Œ๊ฐ€ ์˜๋„๋Œ€๋กœ ๋ฐฐ์น˜๋  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ๋‹จ, static์˜ ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ์†์„ฑ๋“ค์€ ๋ฌผ๋ก , z-index ๊ฐ™์€ ์†์„ฑ์˜ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์—†๋‹ค. ๋ฌธ์„œ์˜ ์›๋ž˜ ํ๋ฆ„์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์œ„์น˜๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. relative ํ•ด๋‹น ์†์„ฑ์„ ๊ฐ€์ง€๋Š” ์š”์†Œ๋Š” ์›๋ž˜์˜ ๋ฌธ์„œ ํ๋ฆ„์„ ๋ฐฐ์ œํ•˜์ง€ ์•Š์ง€๋งŒ, ์ž๊ธฐ ์ž์‹ ์„ ๊ธฐ์ค€ ์‚ผ์•„ top, bottom, r..

DOCTYPE, HTML, XHTML, ๊ทธ๋ฆฌ๊ณ  HTML5

DOCTYPE ์œ ๊ทœํ•œ ์—ญ์‚ฌ๋ฅผ ๊ฐ€์ง„ HTML์€ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉฐ ๊ทธ๋•Œ ๊ทธ๋•Œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ํ‘œ์ค€์œผ๋กœ ํ•˜๋Š” ๋ฒ„์ „๋“ค์„ ๊ณ„์† ์—…๋ฐ์ดํŠธํ•ด์™”๋‹ค. ๋‹น์—ฐํžˆ ์—ฌ๋Ÿฌ ๋ฒ„์ „์ด ์กด์žฌํ•  ์ˆ˜๋ฐ–์— ์—†๊ณ , ์ด๋“ค์€ ๊ฐ๊ฐ์˜ ์ด๋ฆ„๋„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ฐ€๊นŒ์šด ์ˆœ์œผ๋กœ HTML5, XHTML 1.1, HTML 4 ๋“ฑ์„ ๋“ค์–ด๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ฒ„์ „ ๋ณ„๋กœ ์ง€์›ํ•˜๋Š” ํƒœ๊ทธ๋‚˜ ์†์„ฑ์ด ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๋‹ค. ๋ฌผ๋ก  deprecated๋œ ๊ธฐ๋Šฅ๋„ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ์›น ๋ฌธ์„œ๊ฐ€ ์–ด๋–ค HTML ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์•Œ๋ ค์ค„ DTD(Document Type Declaration)์ด๋ผ ํ•˜๋Š” ๋ฌธ์„œ ํ˜•์‹ ์ง€์‹œ์ž๋ฅผ ์™€ ๊ฐ™์ด HTML ๋ฌธ์„œ ์ตœ์ƒ๋‹จ์— ์ž‘์„ฑํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋ฅผ ์ฝ๊ณ  ์„ ์–ธ๋œ ๋ฒ„์ „์— ๋งž๋Š” ๋ฌธ์„œ๋ฅผ ๋ Œ๋”๋งํ•ด์„œ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. deprecated ๋˜๋Š” ๋ช‡ ..

[Github] ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ/๋กœ์ปฌ ๋˜๋Š” ๋ฆฌ๋ชจํŠธ์—์„œ ๋ธŒ๋žœ์น˜ ์‚ญ์ œ

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Github์˜ ํ”„๋กœ์ ํŠธ ๊ธฐ๋Šฅ์„ ์ •๋ง ์ž˜ ํ™œ์šฉํ•˜๊ณ  ์žˆ๋‹ค. Pull Request์™€ Issue ํŠธ๋ž™ํ‚น, ์นธ๋ฐ˜ ๋ณด๋“œ๋กœ ์Šค์ผ€์ฅด๋ง ๋“ฑ๋“ฑ ์ฝ”๋“œ์™€ ์ง์ ‘์  ๊ด€๋ จ์ด ์žˆ๋Š” ์‚ฌํ•ญ์€ ์ด๊ณณ์— ์ž˜ ๊ธฐ๋กํ•ด๋‘๊ณ , ์ผ์ • ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์€ ๋…ธ์…˜์— ์˜์กดํ•˜๊ณ  ์žˆ๋‹ค. Git์— ๋Œ€ํ•ด์„œ๋„ ์ƒˆ๋กญ๊ฒŒ ๋งŽ์ด ๋ฐฐ์šฐ๋Š” ๊ฒŒ ์žˆ๋‹ค. ๊ฐ€๋ น, ํ˜„์žฌ๊นŒ์ง€๋Š” ํŒ€์›๋ณ„๋กœ ํ•˜๋Š” ์ผ์ด ๊ฒน์น˜์ง€ ์•Š์•„์„œ ๊ฐ์ž์˜ ๋ธŒ๋žœ์น˜๋ฅผ ๋”ฐ์„œ ์ž‘์—…ํ–ˆ๋‹ค๋ฉด, ์ด์ œ ๊ฒน์น˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋งŽ์•„์ ธ์„œ ๊ธฐ๋Šฅ๋ณ„๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ๋”ฐ์„œ ์ž‘์—…ํ•˜๊ณ  ๊ทธ๋•Œ๊ทธ๋•Œ ๋ณ‘ํ•ฉํ•˜๊ณ  ์‚ญ์ œํ•˜๋Š” ์‹์ด๋‹ค. ๊ด€์Šต๋Œ€๋กœ feature/[๊ธฐ๋Šฅ]์œผ๋กœ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์„ ์ ์–ด์ค€๋‹ค. ์˜ค๋Š˜์€ register ์‹œ Formik์™€ Yup ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ Validation์„ ํ…Œ์ŠคํŠธํ•ด๋ณผ ์ผ์ด ์žˆ์–ด์„œ ๊ฐ€์ด๋“œ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š๋ผ feature/register๋ผ..

[JavaScript] ์ •๊ทœ์‹ ์ด์šฉํ•œ String Date ๊ฐ€๊ณตํ•˜๊ธฐ

'20210430' ๊ฐ™์€ ๋‚ ์งœ ๋ฌธ์ž์—ด์„ Date ๊ฐ์ฒด๋กœ ๋งŒ๋“ค ๋•Œ, ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์–ด์„œ '2020-04-30' ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ณ ์ž ํ–ˆ๋‹ค. ์ •๊ทœ์‹์„ ์ด์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ฐ€๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ํ•˜์ดํ”ˆ์œผ๋กœ ๊ตฌ๋ถ„์ง€์„ ๋•Œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

[React.js] Re-rendering Issue & Objects are not valid as a React child

์‹œ์ž‘ํ•˜๋ฉฐ Nomad Coder ๊ฐ•์˜ ์ค‘ useTab ์ปค์Šคํ…€ ํ›… ๋งŒ๋“œ๋Š” ๊ณผ์ •์—์„œ ์ œ๋ชฉ์— ์จ๋‘” ๊ฒƒ์ฒ˜๋Ÿผ Re-rendering Issue์™€ Objects are not valid as a React ์ด์Šˆ๋ฅผ ๋งŒ๋‚ฌ๋‹ค. ํ”ํ•œ ์ด์Šˆ์ด๋ฏ€๋กœ ์ž‘์„ฑํ•˜๋ฉด์„œ ์ด๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ์™œ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์จ๋‘๊ณ ์ž ํ•œ๋‹ค. ์ฝ”๋“œ Re-rendering Issue ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•  ๋•Œ์˜ ์ฝ”๋“œ๋Š” ์œ„ ๋ชจ์Šต๊ณผ ๊ฐ™๋‹ค. ์—ฌ๊ธฐ์„œ 2๋ฒˆ ์ฃผ์„ ํ‘œ์‹œ์—์„œ ์‹ค์ˆ˜๋ฅผ ํ•˜๊ฑฐ๋‚˜ ์•„๋ž˜ return ๋˜๋Š” ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ์˜ onClick ๋ถ€๋ถ„์„ ์ž˜๋ชป ์ ์„ ๊ฒฝ์šฐ Re-Rendering์ด ๊ณ„์† ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. useTabs ํ›…์€ ๊ฐ์ฒด ํ•˜๋‚˜๋ฅผ return ํ•ด์ฃผ๊ณ , App() ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ๋งจ ์ฒ˜์Œ UseTabs๋Š” useState๋ฅผ ํ†ตํ•ด currentI..

[firebase] updateProfile is not a function Issue

๋ฌธ์ œ ์ƒํ™ฉ Firebase์˜ Auth ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ์œ ์ €์˜ ํ”„๋กœํ•„ ์ •๋ณด๋ฅผ ๋ฐ›์•„์„œ DisplayName์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์—…๋ฐ์ดํŠธ๋Š” ์ œ๋Œ€๋กœ ๋์ง€๋งŒ, ๋‘ ๋ฒˆ์งธ๋ถ€ํ„ฐ๋Š” ์•„๋ž˜ ๊ฐ™์€ ์—๋Ÿฌ๋ฅผ ๋ƒˆ๋‹ค. ๋ฌธ์ œ ํ•ด๊ฒฐ ์ตœ์ƒ์œ„ App.js ํŒŒ์ผ์—์„œ refreshuser๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๋‘๊ณ , ํ”„๋กœํ•„ ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋งˆ๋‹ค ์ด๋ฅผ ๋ฐ”๋กœ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ firebase.auth๋กœ๋ถ€ํ„ฐ currentUser๋ฅผ ๋ฐ›์•„์˜ค๊ณ  ์žˆ์—ˆ๋‹ค. ์—ฌ๊ธฐ๊นŒ์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์ง€๋งŒ, ์ด๋ฅผ Object.assign({}, user))๋กœ ๋ณต์‚ฌํ•œ ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๊ณผ์ •์—์„œ enumerable ์†์„ฑ์ธ ๋ฉ”์†Œ๋“œ updateProfile์„ ๋ณต์‚ฌํ•ด์˜ค์ง€ ๋ชปํ–ˆ๋˜ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์œ ์ €๊ฐ€ ํ”„๋กœํ•„ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•œ ์ฒซ ๋ฒˆ์งธ ์‹œ์ ์—์„œ๋Š” ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์ง€๋งŒ, refreshuser ๋ฉ”์†Œ..