κΈμ μμ±νκΈ°μ μμ μ΄ κ²μκΈμ μ§μμ μ νλΈ λλ¦Όμ½λ© by μ리λμ λμμμ΄ μΆμ²μμ μλ €λ립λλ€.
https://www.youtube.com/watch?v=1Lbr29tzAA8&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=7
Classμ Object κ°λ μ 리
Javaλ₯Ό λ°°μ°λ©΄μ κ°μ²΄μ§ν₯μ λν΄ μ‘°κΈμ΄λλ§ λ°°μ΄ μ μ΄ μλλ° μ΄λ²μ μλ°μ€ν¬λ¦½νΈλ₯Ό λ°°μ°λ©΄μ λ€μ νλ² μ 리ν νμμ±μ΄ μλ€κ³ λκ»΄μ‘λ€
β
class λ μμ±νκ³ μ νλ 물체μ μ’ λ₯ λλ νμ΄λΌκ³ μκ°νλ©΄ νΈνκ² λ€
class person {
name;
age;
spaek();
]
μλ person μ΄λΌλ ν΄λμ€λ₯Ό λ§λ€μλλ° μ¬λμ μ΄λ¦κ³Ό λμ΄λΌλ νλ‘νΌν°λ₯Ό κ°μ§κ³ μκ³
spaek() functionμ΄ μλλ°
β
nameκ³Ό ageλ₯Ό μμ± ( field )
spaek() λ₯Ό νλ ( method ) λΌκ³ νλ€
μ¦ ν΄λμ€λ fields μ methodκ° μ’ ν©μ μΌλ‘ λ¬Άμ¬μλ κ²μ λ§νλ€
κ°νΉ ν΄λμ€ λ΄λΆμ methodλ λ€μ΄μμ§ μκ³ fieldλ§ λ€μ΄μλ κ²½μ°λ₯Ό data class λΌκ³ λ§νλ€
β
ν΄λμ€λ₯Ό λΆμ΄λΉ΅μ νμ΄λΌκ³ κ°μ ν΄ λ³΄μμ λ ν΄λμ€ μ체μλ λ°μ΄ν°κ° λ€μ΄μμ§
μκ³ μ΄λ€ λ°μ΄ν°λ§ λ€μ΄μ¬ μ μλ€κ³ μ§μ ν΄λλ κ²μ΄λ€
μ€μ λ‘ μ΄ ν΄λμ€λ₯Ό μ΄μ©νμ¬ λ°μ΄ν°λ₯Ό λ£μ΄μ λ§λλ κ²μ΄ λ°λ‘ object ( κ°μ²΄ ) μ΄λ€ .
ν΄λμ€μ ν₯μ΄λΌλ fieldλ₯Ό λ£μ΄ λ§λ object !
objectλ ν΄λμ€λ₯Ό μ΄μ©νμ¬ κ΅μ₯ν λ§μ΄ λ§λ€ μ μλ€
ν΄λμ€λ μ μλ§ νλ κ²μ΄λΌμ μ€μ λ‘ λ©λͺ¨λ¦¬μ μ¬λΌκ°μ§ μμ§λ§
μ€λΈμ νΈλ λ©λͺ¨λ¦¬μ μ¬λΌκ°λ κ²μ΄λ€
Classλ₯Ό μ μΈνλ λ°©λ²
μλ°μ€ν¬λ¦½νΈμλ μ΅κ·ΌμΈ ES6 μ΄νμ ν΄λμ€λΌλ κ°λ μ΄ λμ λμκΈ° λλ¬Έμ
κ·Έ μ΄μ μλ μ€λΈμ νΈλ‘λ§ λ§λ€μλ€κ³ νλ€.
ν΄λμ€μ μ κΈμλ νμ λλ¬Έμμ¬μΌ νλ€κ³ λ°°μ λ€
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
μμ κ°μ΄ Person μ΄λΌλ ν΄λμ€μ μμ±μ ν¨μ constructorλ₯Ό μ΄μ©ν΄ name κ³Ό age λ°μ΄ν°λ₯Ό μ λ¬λ°μ
μ΄ ν΄λμ€ λ΄μ μ‘΄μ¬νλ this λ‘ ννλ name κ³Ό age μ ν λΉνκ² λλ€
// μ΄κ²μ΄ fields !
β
κ·Έλ¦¬κ³ κ·Έ μλμ
spaek() {
console.log(`${this.name}: hello!`);
}
μ΄λ κ² method λ₯Ό μ μΈνλ©΄ λλ€
methodμ μ½μμ μΆλ ₯λλ κ°μ ( this.nameμ λ°μμ¨ κ° ) : hello ! λΌλ κ²°κ³Όκ° μΆλ ₯μ΄ λλ€
Object μμ±
μμμ λ§λ ν΄λμ€ μμ Song μ΄λΌλ κ°μ²΄λ₯Ό λ§λ€μ΄ 보λλ‘ νμ
μμλ₯Ό μν΄ μμμ μμ±ν ν΄λμ€λ₯Ό κΈ°μ€μΌλ‘ νλ©΄
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
spaek() {
console.log(`${this.name}: hello!`);
}
}
μ΄λ κ² μ μΈλ ν΄λμ€μ new ν€μλλ₯Ό μ¬μ©νμ¬ songμ΄λΌλ Objectλ₯Ό μμ±ν΄ 보λλ‘ νμ
const song = new Person('song', 25);
β
μμ κ°μ΄ new ν€μλλ₯Ό μ¬μ©ν΄ objectλ₯Ό μμ±νμλ€
κ΄νΈ μμ μμλλ‘ 'song'μ nameμ, 25λΌλ κ°μ ageμ ν λΉλλ€
β
μ΄μ μ΄ κ°μ μΆλ ₯ν¨κ³Ό λμμ speak λ©μλλ μ¬μ©ν΄λ³΄λλ‘ νμ
console.log(song.name);
console.log(song.age);
song.spaek();
μμμ Objectμ μ΄λ¦μ song μΌλ‘ λ€μ΄λ° νκΈ° λλ¬Έμ song λ€μ . μ λΆμ¬μ name νλ‘νΌν°λ₯Ό κ°μ Έμ¨λ€
μλλ λ§μ°¬κ°μ§ !
β
κ²°κ³Όκ°μ μλμ κ°μ΄ μΆλ ₯λλ€ !
song
20
song: hello!
Getter & Setter
getter λ ν΄λμ€μ μ€μ νλ κ²μ΄λ©°
κ°μ²΄ λ΄λΆμ νΉμ κ°μ μ‘°νν λ λμμ§λ κ°μ μ€μ νλ κ²μ΄λ€
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
get age() {
return this._age;
}
μμμ μ μΈν ν΄λμ€μ getμ΄λΌλ ν¨μλ₯Ό μ¬μ©νμ¬ Person ν΄λμ€λ‘ λ§λ€μ΄μ§ μ€λΈμ νΈμ age λ₯Ό
μ‘°ννλ €κ³ ν λ this._age λΌλ κ°μ΄ μΆλ ₯λλλ‘ νλ€
β
μ΄λ getterμ setter ν¨μ λ΄λΆμ νλ‘νΌν° μ΄λ¦μ _ λ₯Ό μ¬μ©νμ¬ κ΅¬λΆν΄μΌ νλ€!
setter λ κ°μ²΄μ κ°μ μλ‘μ΄ κ°μ μ½μ νλ €κ³ ν λ νΉμ ν 쑰건μ μ£Όμ΄ μ‘°κ±΄μ μ£Όμ΄μ§ κ°μ λ²μλ₯Ό
λ²μ΄λκ² λλ©΄ μ§μ ν κ°μ΄ μ½μ λμ΄μ§λ κ²μ΄λ€
μ½μ νλ €λ κ°μ΄ value λ§€κ°λ³μλ‘ λ€μ΄κ°λ€
set age(value) {
if ( value < 0 ) {
console.log('age μ 0 λ³΄λ€ μμκ°μ μ½μ
ν μ μμ΅λλ€');
}
μ΄λ κ² if λ¬Έμ ν΅ν΄ 0λ³΄λ€ μμ κ²½μ° κ²½κ³ λ©μμ§λ₯Ό μΆλ ₯νκ² νλ€
β
λ€λ₯Έ λ°©μμΌλ‘ μΌνμ°μ°μλ₯Ό ν΅ν΄ 0λ³΄λ€ μμΌλ©΄ 0μ΄ μ½μ λκ³
μλ κ²½μ°μλ value κ°μ΄ μ½μ λλλ‘ νλ λ°©μμ΄λ€
set age(value) {
this._age = value < 0 ? 0 : value;
}
μμ & λ€μμ±
μμμ μ½κ² λ§ν΄μ μμμΈλ₯Ό λ΄λ κ²μ²λΌ
λΆλͺ¨μ ν΄λμ€μ λ°μ΄ν°λ₯Ό μμμ λ°μ΄ν°μμ μμλ°μ λκ°μ΄ μΈ μ μκ² ν΄μ£Όλ κ²μ΄λ€
class Shape {
constructor(width, height, color) {
this.width = width;
this.height= height;
this.color= color;
}
draw() {
colsole.log(`drawing ${this.color} color of`);
}
getArea() {
return this.width * this.height;
}
μμ κ°μ΄ Shape μ΄λΌλ ν΄λμ€ μμ νλμ λ©μλλ€μ Triangle μ΄λΌλ ν΄λμ€λ₯Ό μμ±νμ¬ μμμ νλ €λ©΄
β
class Triangle extends Shape {}
μμκ°μ΄ extends λΌλ ν€μλλ₯Ό μ΄μ©νλ©΄ Shapeμμ μλ νλμ λ©μλλ€μ μ°μ₯νμ¬ Triangle ν΄λμ€μμ
μ¬μ©ν μ μλ κ²μ΄λ€
β
μ΄μ κ°μ²΄λ₯Ό μμ±νμ¬ Triangle ν΄λμ€μμ Shapeμ μ μΈλ νλμ λ©μλλ€μ μ¬μ©ν΄λ³΄μ
const triangle = new Triangle (20, 20, 'blue');
triangle.draw();
μ΄λ κ² widthμ 20, heightμ 20, color μ 'blue'λ₯Ό μ½μ νκ³
drawλΌλ λ©μλλ νΈμΆν κ²°κ³Όλ₯Ό 보μ
drawing blue color!
Triangle μμ Shapeμμ μ μΈλ λ©μλλ₯Ό μ¬μ©νμ¬ μΆλ ₯μ ν μ μλ€!
λ€μμ±μ μμμ λ°μ ν΄λμ€μμ λ©μλλ₯Ό μ¬μ μ νλ κ²μ λ§νλ€
β
μλ₯Όλ€μ΄
class Triangle extends Shape {
getArea() {
return (this.width * this.height) / 2;
}
μμκ°μ΄ Shapeμμ μ μΈν getArea λ©μλλ₯Ό μ¬μ μνμ¬ μ¬μ©ν μ μλ κ²μ΄ λ€μμ±μ΄λ€
β
Triangleμμ μ¬μ μν getArea λ©μλλ₯Ό νΈμΆν κ°μ 보μ
colsole.log(triangle.getArea());
μ΄λ κ² νΈμΆνμ¬ μΆλ ₯μ νκ²λλ©΄
200
μμκ°μ΄ λ€λ₯Έ μ°μ°μ νκ²λμ΄ 200 μ΄λΌλ κ°μ΄ λμ€κ² λλ€ !
β
μ΄κ²μ μ€λ²λΌμ΄λ© μ΄λΌκ³ νλ€
instanceof
instanceofλ λ°μ μμμ ν¨κ» μ΄ν΄λ³΄λ©΄ μ½κ² μ΄ν΄κ° κ°λ₯νλ€
console.log(triangle instanceof Triangle);
μΌμͺ½μ μλ triangle μ΄λΌλ μ€λΈμ νΈκ° Triangle μ΄λΌλ ν΄λμ€μ μΈμ€ν΄μ€μΈμ§ μλμ§λ₯Ό
trueμ falseλ‘ μΆλ ₯ν΄ μ£Όλ κ²μ΄λ€
μμ κ²°κ³Όλ true !
β
λ λ€λ₯Έ μμλ‘ μλλ₯Ό μ΄ν΄λ³΄μ
console.log(triangle instanceof Shape);
μμ²λΌ triangle μ€λΈμ νΈκ° Shape ν΄λμ€λ₯Ό μμλ°μκΈ° λλ¬Έμ true!
'JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
JavaScript (ES6) - Array APIs μ΄μ 리 - ( μ μ©ν 10κ°μ§ λ°°μ΄ ν¨μ ) (0) | 2021.05.23 |
---|---|
JavaScript (ES6) - Prototype (0) | 2021.05.20 |
JavaScript (ES6) - Array κ°λ κ³Ό APIs (0) | 2021.05.01 |
JavaScript (ES6) - Object (0) | 2021.05.01 |
JavaScript (ES6) - ν¨μμ μ μΈκ³Ό νν ( Arrow Function ) (0) | 2021.04.27 |