Skip to content

javascript_in_depth_3

KyusungDev edited this page Apr 28, 2017 · 2 revisions

ํ”„๋กœํ† ํƒ€์ž…๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ, ๊ทธ๋ฆฌ๊ณ  ์ƒ์†

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Object-Oriented Programming)

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

๋‚˜๋ฌด ์œ„ํ‚ค(๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด)

์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ๋‹ค์Œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค.

  1. ์บก์Аํ™” : ๋ฐ์ดํ„ฐ๋‚˜ ๊ธฐ๋Šฅ์„ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์บก์Аํ™”์˜ ๊ตฌํ˜„์„ ์œ„ํ•ด ๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด๋Š” ํด๋ž˜์Šค(Class)๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ํด๋ž˜์Šค๋Š” ์†์„ฑ๊ณผ ํ–‰๋™์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ํ‹€์ด๋ฉฐ, ์ด๋ฅผ ์‹ค์ฒดํ™”ํ•œ ๊ฒƒ์„ ๊ฐ์ฒด ๋˜๋Š” ์ธ์Šคํ„ด์Šค(Instance)๋ผ๊ณ  ํ•œ๋‹ค.
  2. ์ƒ์† : ๊ณตํ†ต์ ์ธ ํŠน์ง•์„ ์ •์˜ํ•œ ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์„ ๋ฌผ๋ ค๋ฐ›๋Š”๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
  3. ๋‹คํ˜•์„ฑ : ํ•˜๋‚˜์˜ ๋ฉ”์†Œ๋“œ๋‚˜ ํด๋ž˜์Šค๋ฅผ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋™์ž‘์‹œํ‚ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์ธ๊ฐ€?

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

ํ”„๋กœํ† ํƒ€์ž…์„ ํ†ตํ•œ ๊ฐ์ฒด์ง€ํ–ฅ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด ์ƒ์„ฑ

function๊ณผ new ํ‚ค์›Œ๋“œ ํ™œ์šฉํ•œ ๊ฐ์ฒด์˜ ์ƒ์„ฑ

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

var unikys = new Person("unikys", "unikys.tistroy.com");

ECMAScript 6์—์„œ ์ œ๊ณตํ•˜๋Š” class ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•œ ๊ฐ์ฒด์˜ ์ƒ์„ฑ

class Person {
    constructor(name, blog) {
        this.name = name;
        this.blog = blog;
    }
}

var unikys = new Person("unikys", "unikys.tistroy.com");

class์™€ function ์„ ์–ธ์˜ ์ฐจ์ด

  • ํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค
  • class ํ‚ค์›Œ๋“œ๋กœ ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•˜๋Š” ์†Œ์Šค๊ฐ€ ์‹คํ–‰๋˜๊ณ  ๋‚œ ์ดํ›„์— ๊ฐ์ฒด์ƒ์„ฑ ๊ฐ€๋Šฅ

this์˜ ์ดํ•ด

this๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ฒฐ์ •๋˜๋Š”์ง€ ์•Œ๋ ค๋ฉด ํ•จ์ˆ˜ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์‚ดํŽด๋ด์•ผ ํ•œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„ ํ•จ์ˆ˜๊ฐ€ ๋‹ค์Œ์˜ ๋„ค ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ˜ธ์ถœ๋œ๋‹ค.

  • ์ผ๋ฐ˜ ํ•จ์ˆ˜๋กœ์˜ ํ˜ธ์ถœ
  • ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋กœ์˜ ํ˜ธ์ถœ
  • call() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ํ˜ธ์ถœ
  • apply() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ํ˜ธ์ถœ

ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ฅธ this์˜ ๋ณ€ํ™”

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

new ํ‚ค์›Œ๋“œ

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

new ๋™์ž‘

  1. ์ƒ์„ฑ์ž ํ•จ์ˆ˜์˜ ํƒ€์ž…์— ๋”ฐ๋ผ ํ•ด๋‹น prototype์„ ๊ฐ€์ง„ object ์ƒ์„ฑ (๊ธฐ๋ณธํ˜•์ธ ๊ฒฝ์šฐ Object.prototype)
  2. ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑ๋œ object๋กœ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅ
  3. ๊ฒฐ๊ณผ๊ฐ€ Object์ธ ๊ฒฝ์šฐ ์ €์žฅํ•œ ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜, ์•„๋‹ˆ๋ฉด ์ƒ์„ฑ๋œ object๋ฅผ ๋ฐ˜ํ™˜

How does the new operator work in JavaScript?

ํ”„๋กœํ† ํƒ€์ž…์˜ ์ •์˜

prototype์€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค๊ณผ ๊ณต์œ ๋˜๋Š” ์†์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค. ์ƒ์„ฑ์ž๊ฐ€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, ๊ฐ์ฒด๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์ƒ์„ฑ์ž์˜ prototype ์†์„ฑ์„ ํ™œ์šฉํ•˜์—ฌ ์†์„ฑ๋“ค์˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. ์ƒ์„ฑ์ž์˜ prototype ์†์„ฑ์€ constructor.prototype๊ณผ ๊ฐ™์€ ํ‘œํ˜„์‹์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ๊ฐ์ฒด์˜ prototype์— ์ถ”๊ฐ€๋œ ์†์„ฑ์€ ์ƒ์† ๋ฐ›๋Š” ๊ฐ์ฒด๋“ค๊นŒ์ง€ ํ•จ๊ป˜ ๊ณต์œ ๋œ๋‹ค.

ECMAScript 4.3.5 prototype

ํ”„๋กœํ† ํƒ€์ž…์˜ ์‚ฌ์šฉ

prototype์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ

constructor.prototype ์ฝ”๋“œ๋กœ ์ ‘๊ทผํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋“ค์€ ๋‚ด๋ถ€์ ์œผ๋กœ prototype๋ฅผ ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ prototype์— ์ถ”๊ฐ€๋œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. prototype์˜ ๋˜ ๋‹ค๋ฅธ ํŠน์ง•์€ ๊ฐ์ฒด๋ผ๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ์ฒด ๋ณ€๊ฒฝ์€ ์•„์ฃผ ์ž์œ ๋กญ๋‹ค๋Š” ์ ์ด๋‹ค. ๋”ฐ๋ผ์„œ, ๊ฐ์ฒด ์ƒ์„ฑ ์ดํ›„์—๋„ prototype์— ์ƒˆ๋กœ์šด ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœํ† ํƒ€์ž…๊ณผ ์ƒ์„ฑ์ž

function ํ‚ค์›Œ๋“œ๋กœ ์ •์˜ํ•œ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ์ด ์ผ์–ด๋‚œ๋‹ค.

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

Person.prototype.getName = function() {
  return this.name;
}

Person.prototype.getBlog = function() {
  return this.blog;
}

์ƒ์„ฑ์ž๋กœ ํ™œ์šฉ๋˜๋Š” Person์˜ ๊ฒฝ์šฐ์— ์•„๋ž˜์™€ ๊ฐ™์€ ์ˆœํ™˜ ๊ตฌ์กฐ๋กœ ์†์„ฑ์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.
์ƒ์„ฑ์ž์˜ ์ˆœํ™˜ ๊ตฌ์กฐ

์ˆœํ™˜ ๊ตฌ์กฐ์—์„œ new Person()์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.
๊ฐ์ฒด ์ƒ์„ฑ์‹œ ์ˆœํ™˜ ๊ตฌ์กฐ

proto๋ผ๋Š” ํ”„๋กœํ† ํƒ€์ž…์— ์ •์˜๋œ getName, getBlog ํ•จ์ˆ˜๋Š” Person ๊ฐ์ฒด์— ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ณ , ๊ณ„์† proto์— ๋‚จ์•„์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด Person ๊ฐ์ฒด์—์„œ F๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์ดˆ๊ธฐํ™”ํ•˜๋ฉด F์•ˆ์—์„œ this.name๊ณผ this.blog๋ฅผ ์„ค์ •ํ•จ์œผ๋กœ์จ, ์ดˆ๊ธฐํ™”๋œ Person ๊ฐ์ฒด๊ฐ€ name๊ณผ blog ์†์„ฑ์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค.

๋ณ€์ˆ˜์˜ constructor.prototype ์ˆœํ™˜ ๊ตฌ์กฐ ํ™•์ธ
ํ”„๋กœํ† ํƒ€์ž…์— ์žˆ๋Š” ๋ณ€์ˆ˜๊ฐ’์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๋Š” ์˜ˆ

๊ฐ์ฒด ๋‚ด์˜ ์†์„ฑ ํƒ์ƒ‰ ์ˆœ์„œ

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

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ชจ๋“  ๊ฐ์ฒด๋Š” ํ”„๋กœํ† ํƒ€์ž…์ด๋ผ๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋‚ด๋ถ€ ๋งํฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ํ•œ ๊ฐ์ฒด์˜ ํ”„๋กœํ† ํƒ€์ž… ๋˜ํ•œ ํ”„๋กœํ† ํƒ€์ž…์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์ด๊ฒƒ์ด ๋ฐ˜๋ณต๋˜๋‹ค null์„ ํ”„๋กœํ† ํƒ€์ž…์œผ๋กœ ๊ฐ€์ง€๋Š” ๊ฐ์ฒด์—์„œ ๋๋‚œ๋‹ค. ์ด์™€ ๊ฐ™์€ ๊ฐ์ฒด๋“ค์˜ ์—ฐ์‡„๋ฅผ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ(prototype chain) ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์„ ํ†ตํ•œ ์†์„ฑ ๊ณต์œ  ์˜ˆ

ํ”„๋กœํ† ํƒ€์ž…์˜ ์žฅ๋‹จ์ 

  • ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ๋งŽ์ด ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ : ํ”„๋กœํ† ํƒ€์ž… ์‚ฌ์šฉ
  • ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ์ฒด๋ฅผ ์กฐ๊ธˆ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ : ์†์„ฑ์„ ๋ถ€์—ฌํ•ด์„œ ์‚ฌ์šฉ

ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์ด ๋งŽ์•„์ง€๊ฑฐ๋‚˜ ์†์„ฑ์— ์ ‘๊ทผํ•˜๋Š” ํšŸ์ˆ˜๊ฐ€ ์—„์ฒญ ๋Š˜์–ด๋‚˜๊ฒŒ ๋˜๋ฉด ํƒ์ƒ‰์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋Š” ๊ฒƒ์ด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์œผ๋กœ ๋‚˜ํƒ€๋‚ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ๊ฐ์ฒด์— ์ž์ฃผ ์ ‘๊ทผํ•ด์„œ ์ฐธ์กฐํ•ด์•ผ ํ•˜๋Š” ์†์„ฑ์ด๋ผ๋ฉด ํ”„๋กœํ† ํƒ€์ž…์— ์žˆ๋Š” ๊ฐ’์€ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ๋งŒ ํ™œ์šฉํ•˜๊ณ , ๊ฐ์ฒด ์ž์ฒด์˜ ์†์„ฑ์œผ๋กœ ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ ํƒ์ƒ‰์„ ์ตœ์†Œํ™” ํ•˜๋Š”๊ฒƒ์ด ํ”„๋กœํ† ํƒ€์ž…๊ณผ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์„ ํ™œ์šฉํ•˜๋Š” ํ˜„๋ช…ํ•œ ๋ฐฉ๋ฒ•์ผ ๊ฒƒ์ด๋‹ค.

Clone this wiki locally