ํฐ์คํ ๋ฆฌ ๋ทฐ
์ด์ ํฌ์คํ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ํ๋กํ ํ์ ๊ธฐ๋ฐ์ ์ธ์ด๋ผ๋ ๋ง์ ํ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ es6์์ ์ถํํ class ๋ํ ์ด ๊ธฐ๋ฐ ์์์ ๋ณํ๋ ํํ์ ๋๋ค. ๊ทธ๋ผ ๊ธฐ์กด์ ํ๋กํ ํ์ ์ผ๋ก๋ ์ด๋ค์์ผ๋ก ํด๋์ค๋ฅผ ํํํ๋์ง ๋น๊ตํด๋ณด๊ฒ ์ต๋๋ค.
(์ด ๊ธ์ https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Classes ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์์ฑํ์์ต๋๋ค.)
class.js
1 2 3 4 5 6 7 8 | function Cat(name) { this.name = name; } Cat.prototype.speak = function () { console.log(this.name + ' makes a noise.'); }; | cs |
์ด์๊ฐ์ด function์ผ๋ก ์์ฑ์ ํ์์ต๋๋ค. ์ ์ฝ๋๋ฅผ ๋ณด๋ฉด Cat์ด๋ผ๋ ํจ์๊ฐ ์๊ณ ๊ทธ ํจ์(๊ฐ์ฒด)๋ฅผ c๋ผ๋ ๋ณ์์ ์ ์ธํฉ๋๋ค.
๊ทธ๋ผ c ๋ณ์๋ Cat ์๋ฃํ์ ์๋ speak๋ผ๋ ํจ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ง๋๋ค. ์๋ง class๋ฅผ ์์๋ ๋ถ๋ค์ด๋ผ๋ฉด new ์ฐ์ฐ์ ์๊ธฐ๋ฅผ ๋ง์ด ๋ค์ด๋ณด์ จ์ ๊ฒ๋๋ค. ์ฐ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฅธ๋ฐ ๊ฑฐ์ ๊ธฐ์กด์ ์๋ class๋ ๋น์ทํ๊ฒ ๋์์ ํ๊ณ ์์ฃ .
๊ทธ๋ผ es6์ ์ถ๊ฐ๋ class๋ก๋ ์ด๋ป๊ฒ ๋ฐ๋๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
class.js
1 2 3 4 5 6 7 8 9 | class Cat{ constructor(name) { this.name = name; } speak() { console.log(this.name + ' makes a noise.'); } } | cs |
๋๊ฐ์ ๋์์ ํ๋๋ฐ ๊ธฐ์กด์ class์ ๋ํ ๊ฐ๋ ์ ์ข ์๋ค๋ฉด ์ดํด๊ฐ ๋๋ ๊ตฌ๋ฌธ์ผ๋ก ๋ฐ๊ผ์ต๋๋ค.
Constructor์ ๋ํ ์ค๋ช ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Constructor (์์ฑ์)
constructor
๋ฉ์๋๋ class
๋ก ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ด๊ธฐํํ๊ธฐ ์ํ ํน์ํ ๋ฉ์๋์
๋๋ค. "constructor" ๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ํน์ํ ๋ฉ์๋๋ ํด๋์ค ์์ ํ ๊ฐ๋ง ์กด์ฌํ ์ ์์ต๋๋ค. ๋ง์ฝ ํด๋์ค์ ํ ๊ฐ๋ฅผ ์ด๊ณผํ๋ constructor
๋ฉ์๋๋ฅผ ํฌํจํ๋ค๋ฉด, SyntaxError
๊ฐ ๋ฐ์ํ ๊ฒ์
๋๋ค.
class์ ๋ํ ์๊ธฐ๋ฅผ ํ ๋ ๊ผญ ๋์ค๋ ๋จ์ด๊ฐ ์์ ์ด๋ผ๋ ๋จ์ด์ธ๋ฐ์ ๊ธฐ์กด์ ์์ฑ๋ ํด๋์ค๋ฅผ ์ฌ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด์ฃ .
์๋ฐ์์๋ extends๋ผ๋ ํค์๋๋ก ํด๋์ค๋ฅผ ์์๋ฐ๋๋ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๋์ผํฉ๋๋ค.
class.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Animal { constructor(name) { this.name = name; } speak() { console.log(this.name + ' makes a noise.'); } } class Dog extends Animal { speak() { console.log(this.name + ' barks.'); } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class Animal { constructor(name) { this.name = name; } speak() { console.log(this.name + ' makes a noise.'); } } class Dog extends Animal { speak() { super.speak(); console.log(this.name + ' barks.'); } } | cs |
Dog ํด๋์ค๋ Animal ํด๋์ค๋ฅผ ์์๋ฐ์์ผ๋ฏ๋ก super ํค์๋๋ฅผ ์ด์ฉํ๋ฉด Animal ํด๋์ค์ speak ํจ์๊ฐ ํธ์ถ๋ฉ๋๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํด๋ณด์ ๋ถ๋ค์ด๋ผ๋ฉด ๊ฑฐ์ ๋์ผํ ๋ชจ์์ ํ๊ณ ์๊ธฐ๋๋ฌธ์ ๋ ์ฝ๊ฒ ์ดํด๊ฐ ๊ฐ์ค๊ฑฐ๋ผ ์๊ฐํฉ๋๋ค.
'javascript > ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
javascript๋ก ๋๋ง์๊ธฐ ๋ง๋ค๊ธฐ (0) | 2018.12.24 |
---|---|
3 enhanced object literals (0) | 2018.12.13 |
2.1 classes ์ด์ prototype (0) | 2018.12.03 |
1.3 ํ์ดํ ํจ์์์์ arguments (0) | 2018.12.03 |
1.2 ํ์ดํํจ์์์์ this (2) | 2018.11.29 |
- Total
- Today
- Yesterday
- Spring Async
- Request_Limit_Exceeded
- nestjs typeorm
- nestjs config
- NestJS
- node.js backend
- nestjs/cli
- typeorm ์ฐ๊ฒฐ
- node.js
- sequelize
- foreignkey
- Promise error
- ์๊ณ ๋ฆฌ์ฆ
- nestjs project
- Promise bulk
- DeferredResult
- ๊ธฐ์์ฒญAPI
- Spring
- ํ๋ก๊ทธ๋๋จธ์ค
- typeorm
- android
- @nestjs/config
- backend-framework
- nestjs module
- ๋น๋๊ธฐ ์์ฒญ
- JavaScript
- nestjs doc
- nestjs configService
- docker mysql
- nestjs directory
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |