Freecodecamp: [๋ฒ ํƒ€] ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„น์…˜์˜ QA

์— ๋งŒ๋“  2017๋…„ 01์›” 30์ผ  ยท  44์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: freeCodeCamp/freeCodeCamp

์ด๊ฒƒ์€ ์›๋ž˜ ํ•˜๋‚˜์˜ ํŠน์ • ์ฑŒ๋ฆฐ์ง€์— ๋Œ€ํ•ด ์—ด๋ ธ์ง€๋งŒ์ด ์„น์…˜์—์„œ ๋‹ค๋ฅธ ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์„ ์•Œ์•„ ์ฐจ๋ ธ์œผ๋ฏ€๋กœ์ด ๋ฌธ์ œ๋ฅผ ํ•˜๋‚˜์˜ ํ˜ธ (๊ฐ๊ฐ์— ๋Œ€ํ•œ ์„ค๋ช…)๋กœ ํ†ตํ•ฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. @HKuz , ์•„๋งˆ๋„ ์ด๊ฒƒ์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด, ๋‚˜๋Š” ๋‹น์‹ ์ด ์•Œ์•„์•ผ ํ•  ์‚ฌ๋žŒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋น ๋ฅธ ๊ฒ€์ƒ‰์„ํ–ˆ์ง€๋งŒ ์•„๋ฌด๊ฒƒ๋„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์ „๋ฐ˜์ ์œผ๋กœ-์ด๋Ÿฌํ•œ ๋„์ „์€ ํ›Œ๋ฅญํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค! _ ํ™•์‹คํžˆ _ ๊ธฐ์กด OOP ์„น์…˜์— ๋น„ํ•ด _major_ ๊ฐœ์„  !!!! ๋ˆ„๊ฐ€ ๋งŒ๋“ค์—ˆ ๋“  ์ž˜ ํ–ˆ์–ด์š” !!

์ผ๋ฐ˜์ ์ธ ์˜๊ฒฌ / ๋ฌธ์ œ :

  • ์ด ์„น์…˜์—์„œ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์ง€์šธ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ํ†ต๊ณผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. # 13021
  • ์‚ฌ๋žŒ๋“ค์ด ์ฝ”๋“œ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์ž„๋ฒ ๋””๋“œ ์ฑŒ๋ฆฐ์ง€ ์ฝ˜์†”์— ์ถœ๋ ฅ ๋กœ๊น…์„ ๊ฐ€์ ธ ์˜ค๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฑŒ๋ฆฐ์ง€์—์„œ ์ฝ˜์†”์— ๊ธฐ๋กํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ง€๋งŒ ์ธ ํŽ˜์ด์ง€ ์ฝ˜์†”์— ๋กœ๊ทธ์ธํ•˜๋„๋ก ์„ค๊ณ„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ƒ์†์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‹ ์„ ๋ฐ˜๋ณตํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค .

์ด ๋„์ „์€ ์•ฝ๊ฐ„ ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์ œ๋ชฉ์€ ์ƒ์†์„ ์˜๋ฏธํ•˜์ง€๋งŒ ์ƒ์†์€ ๋„์ „์—์„œ ์–ธ๊ธ‰ ๋œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋„์ „๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์บ ํ”„ ์ฐธ๊ฐ€์ž๋Š” ๋นจ๋ฆฌ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ œ์‹œ๋œ ๋ฐฉ์‹์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์•ฝ๊ฐ„ ์—‰๋ง์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋„์ „์ด ๋๋‚  ๋•Œ Animal ์ˆ˜ํผ ํƒ€์ž…์„ ๋งŒ๋“ค์—ˆ์ง€ ๋งŒ์ด ์‹œ์ ์—์„œ Animal ๋Š” Cat ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„ ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œ์ง‘๋‹ˆ๋‹ค Dog . ํ˜ผ๋ž€์„ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์•ฝ๊ฐ„์˜ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ๊ตฌ๋Š” ๋‹ค์Œ ๋„์ „์—์„œ ๋‚˜์™”์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋„์ „๊ณผ ๋‹ค์Œ ๋„์ „์—์„œ๋Š” ๋‹ค์‹œ ์ •์˜ํ•˜์ง€ ์•Š๊ณ  Bird์™€ Dog ๋‚ด๋ถ€์—์„œ Animal์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒ์†์ด๋ผ๋Š” ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์‚ฌ๋ฌผ์„ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ด์™€ ์œ ์‚ฌํ•œ ๋” ๋†’์€ ์ˆ˜์ค€์˜ ๊ฐœ์š”๊ฐ€ ๋Œ€์‹  3 ๊ฐœ๋ฅผ ๋ชจ๋‘ ์—ฐ๊ฒฐํ•˜๋Š”์ด ์ฑŒ๋ฆฐ์ง€์—์„œ ์ฃผ์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ทธ๊ฒƒ๋“ค์ด ์‹œํ€€์Šค๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๊ณ  ์‹ค์ œ๋กœ ์ฑŒ๋ฆฐ์ง€์˜ ์ œ๋ชฉ์ด ๋ถ™์€ ๊ฐœ๋…์„ ์†Œ๊ฐœํ•˜๊ณ  ๊ทธ๊ฒƒ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค ์ด ๋„์ „์˜ ๋์—์„œ ์šฐ๋ฆฌ๋Š” ์•„์ง ๋๋‚˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ถ„๋ช…ํžˆํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  44 ๋Œ“๊ธ€

์  ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด ์†์„ฑ์— ์•ก์„ธ์Šค

(์Šคํ…Œ์ด์ง•์—์„œ ํ•ด๊ฒฐ๋จ) โœ…

์ด ์ฑŒ๋ฆฐ์ง€๋Š” ๋‹ค์Œ ์‚ฌํ•ญ๋งŒ์„ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค.

console.log(dog.name);
console.log(dog.numLegs);

๊ทธ๋Ÿฌ๋‚˜ ๋‘ ๊ฐœ์˜ ๋ณ„๋„ ๋ฌธ์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๊ณ  ๋ช…์‹œ ์ ์œผ๋กœ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋‹ค์Œ์€ ํ†ต๊ณผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

console.log(dog.name, dog.numLegs);

2 ๊ฐœ์˜ ๋ณ„๋„ console.log() ๋ฌธ์„ ์ž‘์„ฑํ•ด์•ผํ•œ๋‹ค๊ณ  ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋‘ ์†”๋ฃจ์…˜์„ ๋ชจ๋‘ ์ˆ˜์šฉํ•˜๋„๋ก ํ…Œ์ŠคํŠธ๋ฅผ ๋ฆฌํŒฉํ„ฐ๋งํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ›„์ž์˜ ์˜ต์…˜์„ ์„ ํ˜ธํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ƒ๊ฐ?

instanceof๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด์˜ ์ƒ์„ฑ์ž๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค .

(์Šคํ…Œ์ด์ง•์—์„œ ํ•ด๊ฒฐ๋จ) โœ…

  • ์–ด๋–ค ์ด์œ ๋กœ ์˜ฌ๋ฐ”๋ฅธ ์†”๋ฃจ์…˜ myHouse instanceof House; ๊ฐ€ ์ž‘์„ฑ๋˜๋ฉด linter๋Š” ๊ฒฝ๊ณ  Expected an assignment of function call and instead saw an expression ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋„์ „์€ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค.
  • ๋˜ํ•œ ์‹œ๋“œ ์ฝ”๋“œ ์ž์ฒด์—๋Š”๋กœ๋“œ์‹œ ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ์— ๋Œ€ํ•œ linter ๊ฒฝ๊ณ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋งˆ์ง€๋ง‰์œผ๋กœ, ์˜๋„์  ์ธ ๊ฒƒ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์•ฝ๊ฐ„ ํ˜ผ๋ž€ ์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ด ์„น์…˜์˜ ์ด์ „ ๊ณผ์ œ์—์„œ ์ƒ์„ฑ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋ฉ๋‹ˆ๋‹ค.
function House(numBedrooms) {
  this.numBedrooms = numBedrooms;
}

๊ทธ๋Ÿฌ๋‚˜์ด ๋„์ „์—์„œ ๊ทธ๋“ค์€ ๋‹ค์Œ ๊ตฌ๋ฌธ์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

let House = function(numBedrooms) {
  this.numBedrooms = numBedrooms;
}

์ด๊ฒƒ์€ ํ˜ผ๋ž€์˜ ์›์ธ์ด ๋  ์ˆ˜์žˆ๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ฐจ์ด์ ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ํ™•์ธํ•ด์•ผํ•˜๋ฉฐ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์„น์…˜ ์ „์ฒด์—์„œ ๊ตฌ๋ฌธ์„ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋‘˜ ๋‹ค ์†Œ๊ฐœํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ž์‹ ์˜ ์†์„ฑ ์ดํ•ด :

์ด๊ฒƒ์— ๋Œ€ํ•œ ๊ด€์ฐฐ ์ผ ๋ฟ์ด๊ณ  ๋‹ค๋ฅธ ์˜๊ฒฌ์ด ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ์ด ๋„์ „์€ hasOwnProperty ๋ณด๋‹ค for...in ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์ง„ํ–‰๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. for...in ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„์ง์ด ์„น์…˜์—์„œ ์ ์ ˆํ•˜๊ฒŒ ์„ค๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์ด ๋‚˜๋จธ์ง€ ์ปค๋ฆฌํ˜๋Ÿผ์„ ํ†ตํ•ด ์ž‘์—…ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋ฉด, ์ด๊ฒƒ์€ ์ ์–ด๋„ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์„น์…˜์—์„œ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์— ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ์„น์…˜์ด ์„œ๋กœ ๋…๋ฆฝ์ ์ด๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ „์ œ ์กฐ๊ฑด์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ?

์ƒ์„ฑ์ž ์†์„ฑ ์ดํ•ด :

(์Šคํ…Œ์ด์ง•์—์„œ ํ•ด๊ฒฐ๋จ) โœ…

์ด ๋ฌธ์ œ๋Š” ๋‹ค์Œ ๋‘ ์†”๋ฃจ์…˜ ์ค‘ ํ•˜๋‚˜๋กœ ํ†ต๊ณผ๋ฉ๋‹ˆ๋‹ค.

function joinDogFraternity(candidate) {
  if (candidate instanceof Dog) {
    return true;
  }
  return false;
}

// OR:

function joinDogFraternity(candidate) {
  if (candidate.constructor === Dog) {
    return true;
  }
  return false;
}

๋ณธ๋Šฅ์ ์œผ๋กœ ์‚ฌ๋žŒ๋“ค์ด ์ œ์•ˆํ•œ ํ•ด๊ฒฐ์ฑ…์„ ๋จผ์ € ์‹œ๋„ ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ํฐ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์ง€๋งŒ, ์ •ํ†ตํ•œ ์บ ํ•‘์นด๊ฐ€ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ์‹œ๋„ํ•˜๊ณ  ์›ํ•  ๋•Œ ์ด๊ฒƒ์ด ๋ฌธ์ œ๊ฐ€๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ง€์ ํ•˜์‹ญ์‹œ์˜ค.

"message: 'your solution should use the constructor property'" ๋ผ๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ •๊ทœ์‹์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์†์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‹ ์„ ๋ฐ˜๋ณตํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค .

์ด ๋„์ „์€ ์•ฝ๊ฐ„ ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์ œ๋ชฉ์€ ์ƒ์†์„ ์˜๋ฏธํ•˜์ง€๋งŒ ์ƒ์†์€ ๋„์ „์—์„œ ์–ธ๊ธ‰ ๋œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋„์ „๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์บ ํ”„ ์ฐธ๊ฐ€์ž๋Š” ๋นจ๋ฆฌ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ œ์‹œ๋œ ๋ฐฉ์‹์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์•ฝ๊ฐ„ ์—‰๋ง์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋„์ „์ด ๋๋‚  ๋•Œ Animal ์ˆ˜ํผ ํƒ€์ž…์„ ๋งŒ๋“ค์—ˆ์ง€ ๋งŒ์ด ์‹œ์ ์—์„œ Animal ๋Š” Cat ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„ ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œ์ง‘๋‹ˆ๋‹ค Dog . ํ˜ผ๋ž€์„ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์•ฝ๊ฐ„์˜ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ๊ตฌ๋Š” ๋‹ค์Œ ๋„์ „์—์„œ ๋‚˜์™”์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋„์ „๊ณผ ๋‹ค์Œ ๋„์ „์—์„œ๋Š” ๋‹ค์‹œ ์ •์˜ํ•˜์ง€ ์•Š๊ณ  Bird์™€ Dog ๋‚ด๋ถ€์—์„œ Animal์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒ์†์ด๋ผ๋Š” ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์‚ฌ๋ฌผ์„ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ด์™€ ์œ ์‚ฌํ•œ ๋” ๋†’์€ ์ˆ˜์ค€์˜ ๊ฐœ์š”๊ฐ€ ๋Œ€์‹  3 ๊ฐœ๋ฅผ ๋ชจ๋‘ ์—ฐ๊ฒฐํ•˜๋Š”์ด ์ฑŒ๋ฆฐ์ง€์—์„œ ์ฃผ์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ทธ๊ฒƒ๋“ค์ด ์‹œํ€€์Šค๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๊ณ  ์‹ค์ œ๋กœ ์ฑŒ๋ฆฐ์ง€์˜ ์ œ๋ชฉ์ด ๋ถ™์€ ๊ฐœ๋…์„ ์†Œ๊ฐœํ•˜๊ณ  ๊ทธ๊ฒƒ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค ์ด ๋„์ „์˜ ๋์—์„œ ์šฐ๋ฆฌ๋Š” ์•„์ง ๋๋‚˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ถ„๋ช…ํžˆํ•ฉ๋‹ˆ๋‹ค.

์ƒ์œ„ ์œ ํ˜•์—์„œ ๋™์ž‘ ์ƒ์† :

(์Šคํ…Œ์ด์ง•์—์„œ ํ•ด๊ฒฐ๋จ) โœ…

์—ฌ๊ธฐ์— ๋งค์šฐ ์‚ฌ์†Œํ•œ ๋ฌธ์ œ-์ด์— ๋Œ€ํ•œ ์‹œ๋“œ์˜ ์ผ๋ถ€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

// Add your code below this line

let duck
let beagle

duck.eat(); // Should print "nom nom nom"
beagle.eat(); // Should print "nom nom nom"

์ด๊ฒƒ์€ linter ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ๋Œ€์‹  ๋‹ค์Œ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋งค์šฐ ์‚ฌ์†Œํ•œ ๋ฌธ์ œ-์ด์— ๋Œ€ํ•œ ์‹œ๋“œ์˜ ์ผ๋ถ€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

let duck; // change this line
let beagle; // change this line

duck.eat(); // Should print "nom nom nom"
beagle.eat(); // Should print "nom nom nom"

@ no-stack-dub-sack-์ด๊ฒƒ๋“ค์€ ๋ชจ๋‘ ํ›Œ๋ฅญํ•œ ํฌ์ธํŠธ์ด๋ฉฐ ์–ด์ œ ์˜คํ”„๋ผ์ธ ์ƒํƒœ ์˜€์ง€๋งŒ์ด ์„น์…˜์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์„น์…˜์„ ์ž์„ธํžˆ ์ฝ์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ‘ ์—ฌ๊ธฐ ๋‚ด ์ƒ๊ฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค (tl; dr-๋‹น์‹ ์ด ๊ฐ€์ ธ์˜จ ๋ชจ๋“  ๊ฒƒ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค) :

  • Use Dot Notation to Access the Properties of an Object : ๋ˆ„๊ตฐ๊ฐ€ console.log ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  • Verify an Object's Constructor with instanceof : ๋ˆ„๋ฝ ๋œ ์„ธ๋ฏธ์ฝœ๋ก ์„ ์ˆ˜์ •ํ•˜๊ณ  House ์ •์˜ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. JS์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ ์ฒ˜์Œ ๋ฐฐ์šฐ๋Š” ์‚ฌ๋žŒ๋“ค์„ ํ˜ผ๋™ ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • Understanding Own Properties : for...in ์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์š”์ -์šฐ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋ฏธ ์ปค๋ฆฌํ˜๋Ÿผ์—์„œ ๋‹ค๋ฃฌ ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์บ ํ”„ ์ฐธ๊ฐ€์ž๋Š” ์›ํ•˜๋Š”๋Œ€๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ฃผ์ œ์— ๋Œ€ํ•œ ํ๋ฆ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. (๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์š”์ ์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์— ํ•ญ๋ชฉ์„ ๋‹ค์‹œ ์ฐพ์•„์•ผํ•˜๋Š” ๊ฒฝ์šฐ ์ฑŒ๋ฆฐ์ง€๊ฐ€ ๊ธธ๊ฑฐ๋‚˜ ๋ฐ˜๋ณต ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.) ์ฆ‰, ๊ตฌ๋ฌธ์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ์˜ˆ์ œ ๋ฐ”๋กœ ์•„๋ž˜์— ๋ฉ”๋ชจ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ( " for...in ๋Š” ...).
  • Understand the Constructor Property : ์ง€์นจ์˜ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€ ํ•  ์ ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.
  • Use Inheritance So You Don't Repeat Yourself : ๋„ค, ๋„์ „์„ ๋” ์ž˜ ๋ฌถ์„ ์ˆ˜์žˆ๋Š” ์ข‹์€ ์ 
  • Inherit Behaviors from a Supertype : ๋ฐ˜๋“œ์‹œ ์„ธ๋ฏธ์ฝœ๋ก ์„ ์ถ”๊ฐ€ํ•ด์•ผํ•˜๋ฉฐ ์ฃผ์„๋„ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค.

์ด ์ž‘์—…์„ํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”. ๋‹ค๋ฅธ ์„น์…˜์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค (ํ•˜๋ฃจ๋‚˜ ์ดํ‹€ ์•ˆ์— ์ž‘์—… ํ•  ์ˆ˜ ์žˆ์Œ). ์•„๋‹ˆ๋ฉด ๋„์›€์ด ํ•„์š”ํ•˜๋ฉด ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜„

@HKuz ์ฟจ, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์„น์…˜์„ ๋งˆ๋ฌด๋ฆฌํ•˜๊ณ  ๋Œ“๊ธ€์ด ์žˆ์œผ๋ฉด ๋ช‡ ๊ฐœ ๋” ์ถ”๊ฐ€ํ•˜๋ฉด ๊ทธ ์‹œ์ ์—์„œ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Help Wanted๋กœ ์—ฌ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ณ„์† ๊ฒŒ์‹œ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ƒ์† ํ›„ ๋ฉ”์„œ๋“œ ์ถ”๊ฐ€ :

์ด ๋ฌธ์ œ๋Š” ๋‹ค์Œ ํ…Œ์ŠคํŠธ ์‚ฌ๋ก€๋กœ ์ธํ•ด ์•ฝ๊ฐ„ ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

Dog should have the bark() method as an own property.

์ด ๋ถ€๋ถ„์˜ ์†”๋ฃจ์…˜์€ ๋‹ค์Œ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Dog.prototype.bark = function() {
    console.log('Woof!');
};

Dog.prototype.hasOwnProperty('bark') ๊ฐ€ true ๋ฐ˜ํ™˜ํ•˜๋Š” ๋™์•ˆ (๋ฌผ๋ก  ๋งž์Šต๋‹ˆ๋‹ค), ํ˜ผ๋ž€์˜ ์›์ธ์€ ์—ฌ๊ธฐ ( ๋ชจ๋“  ์†์„ฑ์— ๋Œ€ํ•œ ๋ฐ˜๋ณต )์—์„œ ๋น„๋กฏ๋ฉ๋‹ˆ๋‹ค.
image

์ •๋ณด ์บ ํ”„ ์ฐธ๊ฐ€์ž๊ฐ€์ด ์‹œ์ ๊นŒ์ง€ ํฌ๊ธฐํ•˜๋ฉด ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๊ธฐ ์œ„ํ•ด bark ๋ฉ”์„œ๋“œ๋ฅผ Dog ๋Œ€์‹ 

์ฐจ์ด์ ์€ Dog ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ bark ๋Š” own ์†์„ฑ์ด _not_๋˜์ง€๋งŒ Dog.prototype ์˜ own ์†์„ฑ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค Dog.prototype . ๋”ฐ๋ผ์„œ ์ด๊ฒƒ์€ ์ด๋Ÿฌํ•œ ๊ฐœ๋…์„ ๋ฐฉ๊ธˆ ์†Œ๊ฐœ๋ฐ›์€ ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ์•ฝ๊ฐ„ ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ์ฑ…์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Dog.prototype should have the bark() method as an own property.

ํ•˜์ง€๋งŒ, ์บ ํ”„ ์ฐธ๊ฐ€์ž๋“ค์—๊ฒŒ ํ”„๋กœํ†  ํƒ€์ž…์˜ prototype ์†์„ฑ์ด ์‹ค์ œ๋กœ ํ•ด๋‹น ํ”„๋กœํ†  ํƒ€์ž…์˜ own ์†์„ฑ์ž„์„ ์•Œ๋ฆฌ๊ธฐ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…

ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด ๋‚ด์˜ ์†์„ฑ์ด ์™ธ๋ถ€์—์„œ ์ˆ˜์ •๋˜์ง€ ์•Š๋„๋ก ๋ณดํ˜ธ :

(์Šคํ…Œ์ด์ง•์—์„œ ํ•ด๊ฒฐ๋จ) โœ…

์ž‘์€ ์˜คํƒ€ :

image

๋‚˜๋Š” "... bird ์˜ ์ •์˜๋ฅผ ๋ฒ—์–ด๋‚ฌ๋‹ค"๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ?

์ฆ‰์‹œ ํ˜ธ์ถœ ๋œ ํ•จ์ˆ˜ ์‹ (IIFE) ์ดํ•ด :

์ด ์ฑŒ๋ฆฐ์ง€์— ๋Œ€ํ•œ ํฐ ๋ฌธ์ œ๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ œ์•ˆ ์ผ๋ฟ์ž…๋‹ˆ๋‹ค. ์ต๋ช…์˜ IIFE ๊ฐ€ ๋” ์ผ๋ฐ˜์ ์ธ ํŒจํ„ด (๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ ์ฑŒ๋ฆฐ์ง€์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํŒจํ„ด)์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์— IIFE ์˜ ์ด๋ฆ„๋„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ต๋ช…์˜ IIFE ๊ฐ€ ๋งŽ์œผ๋ฉด ์˜ค๋ฅ˜๋ฅผ ์ถ”์ ํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ค์›Œ ๋””๋ฒ„๊น…์„ ๋” ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ„์ฃผ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ๊ฐ?

IIFE๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“ˆ ์ƒ์„ฑ :

๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ์ƒ๊ฐ์„ ์–ป๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค ... ์•„๋งˆ @dhcodes ๋˜๋Š” @Greenheart?
๋‚ด ๋ฌธ์ œ๋Š” ๋„์ „์ด ์™œ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ IIFE ์ด ํƒ€๋‹นํ•œ ์ง€ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ์ ์ ˆํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜์—๋Š” ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

let funModule = (function() {
  return {
    isCuteMixin: function(obj) {
      obj.isCute = function() {
        return true;
      };
    },  
    singMixin: function(obj) {
      obj.sing = function() {
        console.log("Singing to an awesome tune");
      };
    }
  };
})();

๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

function Bird () { }
let duck = new Bird();
funModule.singMixin(duck);
duck.sing();

๊ทธ๋Ÿฌ๋‚˜ IIFE ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜๊ธฐ ๋งŒํ•˜๋ฉด ํ•จ์ˆ˜๋ฅผ ์ „ํ˜€ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ  ๋œ ์žฅํ™ฉํ•œ ๋ฐฉ์‹์œผ๋กœ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„์ „์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“ˆ ํŒจํ„ด์˜ ์žฅ์ ์€ ๋ชจ๋“  ๋ชจ์…˜ ๋™์ž‘์„ ๋‹จ์ผ ๊ฐ์ฒด๋กœ ํŒจํ‚ค์ง• ํ•œ ๋‹ค์Œ ์ฝ”๋“œ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ IIFE๊ฐ€ ์ „ํ˜€ ํ•„์š”ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์— ๊ฐœ๋…์„ ๋„์ž…ํ•˜๊ฑฐ๋‚˜ ๋” ๊ฐ•๋ ฅํ•œ ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ์•„์ด๋””์–ด์— ์˜๋ฌธ์„ ์ œ๊ธฐ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์บ ํ”„ ์ฐธ๊ฐ€์ž๊ฐ€์ด๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ํ˜ผ๋ž€ ์Šค๋Ÿฝ๊ฑฐ๋‚˜ ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์ด ํŒจํ„ด์„ ๋‹ฌ์„ฑํ•˜์‹ญ์‹œ์˜ค.

์ด๊ฒฌ์žˆ๋Š” ์‚ฌ๋žŒ?

@ no-stack-dub-sack ์ด๊ฒƒ์ด IIFE์˜ ๊ฐ€์žฅ ์ข‹์€ ์˜ˆ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด module ๋ฅผ ์ œ๊ณตํ•˜๋ฉด ๋” ์ข‹์„๊นŒ์š”?

IIFE์˜ ํ•ต์‹ฌ ๊ฐ€์น˜๋Š” ๊ฐœ์ฒด์˜ ๊ฐœ์ธ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋‹น์‹ ์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋” ์•ˆ์ •์ ์œผ๋กœ ๋งŒ๋“ค๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉด์„œ ๋‹น์‹ ์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ž˜๋ชป ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ค„์ด๋Š” ๋ฐ ์ •๋ง ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‚˜๋จธ์ง€๋Š” ๋ณ€๊ฒฝ / ์ œ๊ฑฐ ๋  ์˜ˆ์ •์ด๋ฉฐ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์—์„œ ์‚ฌ์šฉ๋˜๋ฉด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ช‡ ๊ฐ€์ง€ ๊ณต์šฉ ๋ฉ”์„œ๋“œ ๋งŒ ๋…ธ์ถœํ•˜๋ ค๋Š” vanilla js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์šฉ ์ž‘์€ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ชจ๋“ˆ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์‚ฌ์ดํŠธ์—๋Š” ์ข‹์€ ์˜ˆ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค : https://toddmotto.com/mastering-the-module-pattern/

@Greenheart ์—ฌ๊ธฐ 2 ๊ฐœ์˜ IIFE ์ฑŒ๋ฆฐ์ง€ ์ค‘ ๋งˆ์ง€๋ง‰ ์ฑŒ๋ฆฐ์ง€์—์„œ ๋ชจ๋“ˆ ํŒจํ„ด์œผ๋กœ ์†Œ๊ฐœ๋˜์—ˆ์œผ๋ฉฐ ๋ฌธ์ œ๋Š” ์—†์Šต๋‹ˆ๋‹ค. _ ์™œ _ IIFE๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  IIFE๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช… ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ์žˆ์–ด์•ผํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋ชจ๋“  ๊ฒƒ์„ ๋งํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

IIFE์˜ ํ•ต์‹ฌ ๊ฐ€์น˜๋Š” ๊ฐœ์ฒด์˜ ๊ฐœ์ธ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋‹น์‹ ์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋” ์•ˆ์ •์ ์œผ๋กœ ๋งŒ๋“ค๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉด์„œ ๋‹น์‹ ์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ž˜๋ชป ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ค„์ด๋Š” ๋ฐ ์ •๋ง ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ ์„ค๋ช…ํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ "IIFE์—†์ด ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์ง€๋งŒ IIFE๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์ด๋ฉฐ, ์—ฌ๊ธฐ์— ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค."๋ผ๊ณ  ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ง€์นจ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฆ‰์‹œ ํ˜ธ์ถœ ๋œ ํ•จ์ˆ˜ ์‹ (IIFE)์€ ๊ด€๋ จ ๊ธฐ๋Šฅ์„ ๋‹จ์ผ ๊ฐœ์ฒด ๋˜๋Š” ๋ชจ๋“ˆ๋กœ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ๋ฐ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. "IIFE ์—†์ด๋„ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๋‹ฌ์„ฑ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ,์ด ๋งฅ๋ฝ์—์„œ IIFE์˜ ํ•ต์‹ฌ ๊ฐ€์น˜๋Š” ๊ฐ์ฒด์˜ ๋น„๊ณต๊ฐœ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์„ฑ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๊ท€ํ•˜์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ (์˜ค์šฉ) ์‚ฌ์šฉํ•˜์—ฌ ํ›จ์”ฌ ๋” ์•ˆ์ •์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•. "

@ no-stack-dub-sack ์ด๊ฑฐ! : ํฌ์ธํŠธ _ ์—… :

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ž์œ ๋กญ๊ฒŒ ์ปดํŒŒ์ผํ•˜๊ณ  ์•ฝ๊ฐ„์˜ ๋ณ€๊ฒฝ์„๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ๊ฒƒ์ด ์šฐ๋ฆฌ์—๊ฒŒ ํ•„์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
An <dfn>immediately invoked function expression</dfn> (IIFE) is often used to group related functionality into a single object or module. While the same functionality can be achieved without an IIFE, its core value in this context is that you can create private properties and methods for your objects. This can be very useful for decreasing the ways others can (mis)use your software, and make things much more reliable.

ํ•ด๋‹น ์šฉ์–ด๊ฐ€ ์ด์ „ ๋„์ „ ๊ณผ์ œ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ <dfn> ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ„์†ํ•ด์„œ ์  ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ์ฒด์˜ ์†์„ฑ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

https://github.com/freeCodeCamp/freeCodeCamp/issues/12966#issuecomment -275974706์œผ๋กœ ๊ณ„์†ํ•ฉ๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ๋Š” linter๊ฐ€ ๋ณธ์งˆ์ ์œผ๋กœ ์ฃฝ์€ ์ฝ”๋“œ ์ธ ํ‘œํ˜„์‹์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค (ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—). ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฒฐ๊ณผ๋ฅผ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ๋ฐ ์„ธ ๋ฒˆ์งธ ๋ฌธ์ œ๋Š” ์ œ์•ˆํ•œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์‹œ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์— ํ•จ์ˆ˜ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์€ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋˜๋Š” ๊ฒฝํ—˜์„ ํ†ตํ•ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. function X () {} ์™€ ์ผ์น˜ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ๊ณ ์น  ๊ฒƒ์ด๋‹ค : ๋ฏธ์†Œ :

https://github.com/freeCodeCamp/freeCodeCamp/issues/12966#issuecomment -276268534 ์ˆ˜์ • : ๋ฏธ์†Œ :

https://github.com/freeCodeCamp/freeCodeCamp/issues/12966#issuecomment -276245864 ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋„์ „์— ํ•ด๊ฒฐ์ฑ…์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜ ๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ PR ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค.

์ž์‹ ์˜ ์†์„ฑ ์ดํ•ด :

(์Šคํ…Œ์ด์ง•์—์„œ ํ•ด๊ฒฐ๋จ) โœ…

์ด ํ…Œ์ŠคํŠธ๋Š” ํ˜„์žฌ ๋‚ด์žฅ ๋ฉ”์†Œ๋“œ Object.keys() ์‚ฌ์šฉ์„ ํ—ˆ์šฉํ•˜์ง€๋งŒ for...in ์™€ Object.hasOwnProperty() ๊ฒฐํ•ฉํ•˜์—ฌ ์บ ํ”„ ์ฐธ๊ฐ€์ž๊ฐ€ ๋” ๋‚˜์€ ์—ฐ์Šต์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ๋ชจ๋“  ์†์„ฑ์— ๋Œ€ํ•ด ๋ฐ˜๋ณต :

(์Šคํ…Œ์ด์ง•์—์„œ ํ•ด๊ฒฐ๋จ) โœ…

๋ฐฉ๊ธˆ์ด ์ฑŒ๋ฆฐ์ง€์— ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. Object.keys() ์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฑŒ๋ฆฐ์ง€์—์„œ ์ด๊ฒƒ์ด ํ—ˆ์šฉ๋˜์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—์ด ์ค„ ์—์„œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” PR์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

function Dog(name) {
  this.name = name;
}

Dog.prototype.numLegs = 4;

let beagle = new Dog("Snoopy");

let ownProps = Object.keys(beagle);
let prototypeProps = Object.keys(Dog.prototype);

์ด ๋ฌธ์ œ๋ฅผ ๋ฐ”๋กœ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ํ”„๋กœํ†  ํƒ€์ž…์„ ์ƒˆ ๊ฐ์ฒด๋กœ ๋ณ€๊ฒฝ

๋ถˆ์ถฉ๋ถ„ ํ•œ ์ง€์นจ ๋ฐ ํ…Œ์ŠคํŠธ. describe ๋ฐ eat ๊ฐ€ prototype ์— ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ํ•จ์ˆ˜ ์—ฌ์•ผํ•ฉ๋‹ˆ๊นŒ?

๊ธฐ๋Šฅ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ํ”„๋กœํ†  ํƒ€์ž…์„ ๋ณ€๊ฒฝํ•  ๋•Œ ์ƒ์„ฑ์ž ์†์„ฑ์„ ์„ค์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

PR ์ œ์ถœ : white_check_mark :

์ด ๋ฌธ์ œ๋Š” ๊ฐ€๋…์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด "์ƒ์„ฑ์ž ์†์„ฑ"ํ˜•์‹์„ <code>constructor</code> property ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ด?

์˜ˆ๋ฅผ ๋“ค์–ด, ํ…Œ์ŠคํŠธ ๋ฉ”์‹œ์ง€๋Š”์ด ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ์ œ์•ˆ์€ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด let ๋ฌธ์„ const ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. @mpj ์˜์ด ๋น„๋””์˜ค ๋Š” ์ž˜ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค!

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ์ƒ์† ๋œ ์ƒ์„ฑ์ž ์†์„ฑ ์žฌ์„ค์ • :

PR ์ œ์ถœ : white_check_mark :

์‚ฌ์†Œํ•œ ์˜คํƒ€ : supertype's ์€ ์•„๋งˆ๋„ supertype ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ : IIFE๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“ˆ ์ƒ์„ฑ :

PR ์ œ์ถœ : white_check_mark :

๋งˆ์ด๋„ˆ ์˜คํƒ€ "์—ฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•œ ์˜ˆ์ด๋‹ค :"๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค "์—ฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ด๋‹ค :"

https://github.com/freeCodeCamp/freeCodeCamp/issues/12966#issuecomment -277447340์— ๋Œ€ํ•œ PR ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์ผ๋ฐ˜์ ์ธ ์ œ์•ˆ : ์บ ํ”„ ์ฐธ๊ฐ€์ž๊ฐ€ ์ฑŒ๋ฆฐ์ง€๋ฅผ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ์˜ˆ์ œ๋ฅผ ๋ณต์‚ฌํ•˜๊ณ  1-2 ๊ฐ€์ง€๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋„๋ก ์˜ˆ์ œ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ๋Š” ๊ฐœ๋…์„ ๋ณด์—ฌ์•ผํ•˜์ง€๋งŒ ์ฑŒ๋ฆฐ์ง€ itelf์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์†์„ฑ์ด๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒํ•˜๋ฉด ์‚ฌ๋žŒ๋“ค์ด ๊ฐ ๋„์ „์—์„œ ๋” ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์šธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ถ€ํŠธ ์ŠคํŠธ๋žฉ์„์œ„ํ•œ ๋งž์ถค CSS ๋„๋ž‘

2017 ๋…„ 2 ์›” 4 ์ผ ํ† ์š”์ผ ์˜คํ›„ 9์‹œ 11 ๋ถ„, Samuel Plumppu [email protected]
์ผ๋‹ค :

๋˜ ๋‹ค๋ฅธ ์ผ๋ฐ˜์ ์ธ ์ œ์•ˆ : ์˜ˆ์ œ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์บ ํ”„ ์ฐธ๊ฐ€์ž๋Š” ์˜ˆ์ œ๋ฅผ ๋ณต์‚ฌํ•˜๊ณ  1-2 ๊ฐ€์ง€๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ์™„๋ฃŒ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋„์ „.

์˜ˆ์ œ๋Š” ๊ฐœ๋…์„ ๋ณด์—ฌ์•ผํ•˜์ง€๋งŒ ์†์„ฑ์ด๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.
๋„์ „ itelf์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒํ•˜๋ฉด ์‚ฌ๋žŒ๋“ค์ด
๊ฐ ๋„์ „์—์„œ ๋” ๋งŽ์€.

โ€”
์ด ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌ๋…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฉ”์‹œ์ง€๊ฐ€ ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/freeCodeCamp/freeCodeCamp/issues/12966#issuecomment-277463832 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AX9USApjW3rwocbHWe2yoFLV0RegbkCCks5rZL9SgaJpZM4LxApU
.

@iansibindi ์ด ์ €์žฅ์†Œ์˜ ๋ชจ๋“  ๋ฉ”์‹œ์ง€๋ฅผ ๊ตฌ๋…ํ•˜์‹  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด https://github.com/freecodecamp/freecodecamp๋ฅผ ๋ฐฉ๋ฌธํ•˜์—ฌ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์˜ "Unwatch" ๋ฅผ ํด๋ฆญํ•˜์‹ญ์‹œ์˜ค.

๋ถˆํŽธ์„ ๋“œ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค!

@Greenheart ๋งํฌ๋กœ๋„ ์ด๋“ค ๊ฐ๊ฐ์„ ๋”ฐ๋ผ๊ฐ€๋Š” ๊ฒƒ์ด ์กฐ๊ธˆ ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์„

PR์˜ ์ดˆ๊ธฐ ๊ฒ€ํ† ๋ฅผ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ PR์ด ์—ด๋ ค์žˆ๋Š” ๊ฒฝ์šฐ ์›๋ณธ ๋Œ“๊ธ€ ๊ฐ๊ฐ์— ๋Œ“๊ธ€์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ•ด๊ฒฐ ๋œ ๋ฌธ์ œ๋ฅผ ์ถ”์  ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

@ no-stack-dub-sack Haha ๋‚˜๋„ ์ง์ ‘ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. :๋ฏธ์†Œ:

WIP / ๊ณ ์ • ๋œ ๊ฐ ์ฃผ์„์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ํฐ "PR open"(๋งํฌ ํฌํ•จ)์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

@Greenheart ์™„๋ฒฝ! ๊ฐ์‚ฌ! ์ฒ˜์Œ ๋ช‡ ๊ฐœ์˜ PR์„ ๊ฒ€ํ† ํ–ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/freeCodeCamp/freeCodeCamp/issues/12966#issuecomment -277457211 ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

https://github.com/freeCodeCamp/freeCodeCamp/issues/12966#issuecomment -277459744 ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

https://github.com/freeCodeCamp/freeCodeCamp/issues/12966#issuecomment -277447340 ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@ no-stack-dub-sack ์ข‹์Šต๋‹ˆ๋‹ค. ์•„์ง ๋ช‡ ๊ฐ€์ง€ ํ•  ์ผ์ด ์žˆ์ง€๋งŒ ์˜ค๋Š˜ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค!

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋‹ซ์•˜์Šต๋‹ˆ๋‹ค.

@Greenheart ์šฐ์™€! ํ›„ํ‡ด-์ด๊ฒƒ์—์„œ ํ•  ์ผ์ด ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ๊ฐœ์„ ์ด ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค!

@ no-stack-dub-sack ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์œ„์˜ ์„ค๋ช…์— ๋”ฐ๋ผํ•ด์•ผ ํ•  ์ผ์ด ๋ช‡ ๊ฐ€์ง€ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ๊ณณ์—์„œ ํ•ด๊ฒฐ๋˜์—ˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„์ง ๊ณ ์ •๋˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅด๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”

๋ชจ๋‘ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์ข…๊ฒฐํ•˜๋Š” ์ค‘์ด๋ฉฐ ๋” ๊ตฌ์ฒด์ ์ธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค์‹œ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰