๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋…์„œ ๋ชฉ๋ก/๋ชจ๋”ฅ๋‹ค Modern JS Deep Dive

[๋ชจ๋”ฅ๋‹ค] ๋ฒˆ์™ธ ) ์šฐ๋ฆฌ๋Š” ์™œ ํ”„๋กœํ† ํƒ€์ž…์— ๋Œ€ํ•ด์„œ ์•Œ์•„์•ผํ• ๊นŒ?

728x90

16์žฅ ~  18์žฅ ์„ ์ฝ์œผ๋ฉฐ

๊ฐ์ฒด๊ฐ€ JS ์˜ ๊ธฐ๋ฐ˜์ด๋ผ ์ค‘์š”ํ•œ ๊ฑฐ ์•Œ๊ฒ ๋Š”๋ฐ, 

์šฐ๋ฆฌ๊ฐ€ ์‹ค์งˆ์ ์œผ๋กœ ์–ด๋””์— ํ”„๋กœํ† ํƒ€์ž…์„ ์“ธ ์ˆ˜ ์žˆ๋‹ค๋Š”๊ฑฐ์ง€..? ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์–ด๋””์— ์จ๋จน์ง€..? ๋“ฑ์˜ ์˜๋ฌธ์ด ๋“ค์—ˆ๋‹ค.

 

์˜๋ฌธ์ด ๋“ค๊ธด ํ–ˆ์œผ๋‚˜, 

๋’ค์—์„œ ์•Œ๋ ค์ฃผ์ง€ ์•Š์„๊นŒ? & ์šฐ์„  ์Šคํ„ฐํ‹ฐ ์ง„๋„๋ถ€ํ„ฐ ๋‚˜๊ฐ€์ž! ๋ผ๋Š” ์ƒ๊ฐ์— ์ฐพ์•„๋ณผ ์ƒ๊ฐ์€ ์•ˆํ–ˆ์—ˆ๋‹ค.

 

 

๋ชจ๋”ฅ๋‹ค ์Šคํ„ฐ๋”” ์Šค๋ ˆ๋“œ์— ์˜ฌ๋ผ์˜จ ์งˆ๋ฌธ

 

๊ทธ๋ฅด๊ฒŒ์šฉ

 

์ด๋ ‡๊ฒŒ ์•„์‰ฌ์šด ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ๊ฐ€ ๋‚˜์™”๋‹ค.

 

 

GPT ํ•œํ…Œ ๋ฌผ์–ด๋ณผ๊นŒ๋ž€ ์ƒ๊ฐ์ด ๋ถˆํ˜„๋“ฏ ๋“ค์—ˆ๋‹ค.

 

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

 

ํ ..

 

https://medium.com/@limsungmook/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94-%EC%99%9C-%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85%EC%9D%84-%EC%84%A0%ED%83%9D%ED%96%88%EC%9D%84%EA%B9%8C-997f985adb42#:~:text=%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%E2%80%94%20%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85&text=%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85%20%EC%B2%B4%EC%9D%B8%EC%97%90%20%EC%9D%98%ED%95%B4,%EC%97%90%20%EC%A0%91%EA%B7%BC%ED%96%88%EA%B8%B0%20%EB%95%8C%EB%AC%B8%EC%9E%85%EB%8B%88%EB%8B%A4

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์™œ ํ”„๋กœํ† ํƒ€์ž…์„ ์„ ํƒํ–ˆ์„๊นŒ

ํ”„๋กœํ† ํƒ€์ž…์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์œผ๋ ˆ ๋‚˜์˜ค๋Š” ์„œ๋‘์ฒ˜๋Ÿผ ์ € ๋˜ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฒ˜์Œ ์ ‘ํ–ˆ์„ ๋•Œ ๊ฐ€์žฅ ๋‹นํ™ฉ์Šค๋Ÿฌ์› ๋˜ ๊ฒŒ ํ”„๋กœํ† ํƒ€์ž…์ด์—ˆ์Šต๋‹ˆ๋‹ค.

medium.com

 

์ด ๊ธ€์„ ์Šคํ„ฐ๋””์› ์ค‘ ํ•œ ๋ถ„์ด ๋ณด๋‚ด์ฃผ์…จ๊ณ , 

์–ด๋ ต์ง€๋งŒ ์žฌ๋ฐŒ๊ฒŒ ์ฝ์—ˆ๋‹ค.

 

ํ˜„์‹ค์— ์กด์žฌํ•˜๋Š” ๊ฒƒ ์ค‘ ๊ฐ€์žฅ ์ข‹์€ ๋ณธ๋ณด๊ธฐ๋ฅผ ์›ํ˜•(prototype)์œผ๋กœ ์„ ํƒํ•œ๋‹ค.

๋ฌธ๋งฅ(์ปจํ…์ŠคํŠธ)์— ๋”ฐ๋ผ ‘๋ฒ”์ฃผ’, ์ฆ‰ ‘์˜๋ฏธ’๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค.

...

ํ”„๋กœํ† ํƒ€์ž… ์–ธ์–ด์—์„œ๋Š” ‘๋ถ„๋ฅ˜’๋ฅผ ์šฐ์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ƒ์„ฑ๋œ ๊ฐ์ฒด ์œ„์ฃผ๋กœ ์œ ์‚ฌ์„ฑ์„ ์ •์˜ํ•œ๋‹ค.

์–ดํœ˜, ์“ฐ์ž„์ƒˆ๋Š” ๋งฅ๋ฝ(context)์— ์˜ํ•ด ํ‰๊ฐ€๋œ๋‹ค.

 

 

๊ทธ๋ฆผ์œผ๋กœ ๋ณด๋‹ˆ ๊ทธ ๊ฐœ๋…์ด ์กฐ๊ธˆ ๋” ์™€๋‹ฟ์•˜๋‹ค.

 

 

๊ฒฐ๊ตญ ๊ณตํ†ต๋˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋ถ€๋ถ„์„ ์žฌ์‚ฌ์šฉ ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๊ณ , 

์žฌ์‚ฌ์šฉ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•๋“ค์ด ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š” ๊ฑฐ๋ผ ์ดํ•ดํ–ˆ๋‹ค. 

 

 

 

 

์•„๋ž˜๋Š” ๋˜ ๋‹ค๋ฅธ ์˜ˆ์‹œ๋กœ ๋ณด๋‚ด์ฃผ์‹  ๊ธ€๊ท€. 

์˜ˆ์‹œ๋ฅผ ๋ณด๋‹ˆ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•˜๋Š”์ง€ ์กฐ๊ธˆ๋” ์™€๋‹ฟ๋Š” ๋Š๋‚Œ์ด๋‹ค.

 

 

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

 

function Person(name, age) {
  this.name = name;
  this.age = age;
}

const person1 = new Person("Alice", 30);
const person2 = new Person("Bob", 25);
2. ์ƒ์„ฑ์ž ํ•จ์ˆ˜์˜ ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด์— ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” ๋ชจ๋“  Person ๊ฐ์ฒด๊ฐ€ ๊ณต์œ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
Person.prototype.introduce = function () {
  console.log(`์•ˆ๋…•ํ•˜์„ธ์š”! ์ €๋Š” ${this.name}์ด๊ณ , ๋‚˜์ด๋Š” ${this.age}์‚ด์ž…๋‹ˆ๋‹ค.`);
};

person1.introduce(); // ์•ˆ๋…•ํ•˜์„ธ์š”! ์ €๋Š” Alice์ด๊ณ , ๋‚˜์ด๋Š” 30์‚ด์ž…๋‹ˆ๋‹ค.
person2.introduce(); // ์•ˆ๋…•ํ•˜์„ธ์š”! ์ €๋Š” Bob์ด๊ณ , ๋‚˜์ด๋Š” 25์‚ด์ž…๋‹ˆ๋‹ค.
ํ”„๋กœํ† ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋ฉด, introduce ๋ฉ”์„œ๋“œ์™€ ๊ฐ™์€ ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํ”„๋กœํ† ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ ๊ฐ์ฒด์— ์ง์ ‘ ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด, ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 3. ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์„ ํ†ตํ•œ ์ƒ์† ๊ตฌํ˜„
function Employee(name, age, position) {
  Person.call(this, name, age);
  this.position = position;
}

Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;

Employee.prototype.introduce = function () {
  Person.prototype.introduce.call(this);
  console.log(`์ œ ์ง์ฑ…์€ ${this.position}์ž…๋‹ˆ๋‹ค.`);
};

const employee1 = new Employee("Charlie", 40, "๊ฐœ๋ฐœ์ž");
employee1.introduce();
// ์•ˆ๋…•ํ•˜์„ธ์š”! ์ €๋Š” Charlie์ด๊ณ , ๋‚˜์ด๋Š” 40์‚ด์ž…๋‹ˆ๋‹ค.
// ์ œ ์ง์ฑ…์€ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.
์œ„ ์˜ˆ์‹œ์—์„œ Employee ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” Person์˜ ํ”„๋กœํ† ํƒ€์ž…์„ ์ƒ์†๋ฐ›์•„ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ณ  ์ƒ์†์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœํ† ํƒ€์ž…์„ ๊ณต๋ถ€ํ•˜๋Š” ์ด์œ ๋Š” ์ด๋Ÿฌํ•œ ์žฅ์ ๋“ค ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ”„๋กœํ† ํƒ€์ž…์„ ์ดํ•ดํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋” ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฝ”๋“œ๋ฅผ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ”„๋กœํ† ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1. ๊ธฐ์กด ๊ฐ์ฒด์— ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ ์ถ”๊ฐ€:
Person.prototype.sayGoodbye = function () {
  console.log(`${this.name}์ด(๊ฐ€) ์•ˆ๋…•ํžˆ ๊ณ„์„ธ์š”! ๋ผ๊ณ  ์ธ์‚ฌํ•ฉ๋‹ˆ๋‹ค.`);
};

person1.sayGoodbye(); // Alice์ด(๊ฐ€) ์•ˆ๋…•ํžˆ ๊ณ„์„ธ์š”! ๋ผ๊ณ  ์ธ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
2. ํ”„๋กœํ† ํƒ€์ž…์„ ํ†ตํ•ด ๊ธฐ์กด ๋ฉ”์„œ๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๋ฎ์–ด์“ฐ๊ธฐ:
Person.prototype.introduce = function () {
  console.log(`์•ˆ๋…•ํ•˜์„ธ์š”! ์ œ ์ด๋ฆ„์€ ${this.name}์ด๊ณ , ์ œ ๋‚˜์ด๋Š” ${this.age}์‚ด์ž…๋‹ˆ๋‹ค.`);
};

person1.introduce(); // ์•ˆ๋…•ํ•˜์„ธ์š”! ์ œ ์ด๋ฆ„์€ Alice์ด๊ณ , ์ œ ๋‚˜์ด๋Š” 30์‚ด์ž…๋‹ˆ๋‹ค.
 
 
 
 
3. ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์ค‘ ์ƒ์† ๊ตฌํ˜„:
function Student(name, age, major) {
  Person.call(this, name, age);
  this.major = major;
}

Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;

Student.prototype.introduce = function () {
  Person.prototype.introduce.call(this);
  console.log(`์ „๊ณต์€ ${this.major}์ž…๋‹ˆ๋‹ค.`);
};

const student1 = new Student("David", 22, "์ปดํ“จํ„ฐ ๊ณตํ•™");
student1.introduce();
// ์•ˆ๋…•ํ•˜์„ธ์š”! ์ œ ์ด๋ฆ„์€ David์ด๊ณ , ์ œ ๋‚˜์ด๋Š” 22์‚ด์ž…๋‹ˆ๋‹ค.
// ์ „๊ณต์€ ์ปดํ“จํ„ฐ ๊ณตํ•™์ž…๋‹ˆ๋‹ค.
์ด์ฒ˜๋Ÿผ ํ”„๋กœํ† ํƒ€์ž…์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ์ฒด ์ƒํ˜ธ ์ž‘์šฉ๊ณผ ์ƒ์†์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํ† ํƒ€์ž…์„ ์ดํ•ดํ•˜๋ฉด ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ , ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋ฉฐ, ๋”์šฑ ์ฒด๊ณ„์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ํ”„๋กœํ† ํƒ€์ž…์„ ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด๋ฉฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋” ๊นŠ์ด ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
 

 

 

 

์šฐ์„  ์ดํ•ดํ•œ ๋งŒํผ๋งŒ ๊ฒฐ๋ก ์„ ๋‚ด๋ ค๋ณด๋ฉด, (๋ถ„๋ช… ์ˆ˜์ •ํ•˜๋Ÿฌ ์˜ฌ ๋“ฏ)

๊ฒฐ๋ก :

ํ”„๋กœํ† ํƒ€์ž…์€ ์ฝ”๋“œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๊ณ , ์ด๊ฑธ ๋ฒ ์ด์Šค๋กœ ํ•˜๋Š”๊ฒŒ JS ์˜ ๊ธฐ๋ฐ˜์ธ ๊ฐ์ฒด๋‹ค. ์ด ๊ฐ์ฒด์˜ ๋‚ด๋ถ€์ ์ธ ๊ตฌ์กฐ ๋•๋ถ„์— ์ƒ์† ๋“ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

728x90
๋ฐ˜์‘ํ˜•