17.1 Object μμ±μ ν¨μ
new μ°μ°μμ ν¨κ» object μμ±μ ν¨μλ₯Ό νΈμΆνλ©΄ λΉ κ°μ²΄λ₯Ό μμ±νμ¬ λ°ννλ€.
// λΉ κ°μ²΄μ μμ±
const person = new Object();
// νλ‘νΌν° μΆκ°
person.name = 'April';
person.sayHello = function () {
console.log('Hi! My name is ' + this.name);
};
console.log(person); // {name: "April", sayHello: ƒ}
person.sayHello(); // Hi! My name is April
μμ±μ ν¨μ(constructor)λ?
new μ°μ°μμ ν¨κ» νΈμΆνμ¬ κ°μ²΄(μΈμ€ν΄μ€)λ₯Ό μμ±νλ ν¨μ.μμ±μ ν¨μμ μν΄ μμ±λ κ°μ²΄λ₯Ό μΈμ€ν΄μ€(instance)λΌ νλ€.
μλ°μ€ν¬λ¦½νΈλ Object μμ±μ ν¨μ μ΄μΈμλ String, Number, Boolean, Function, Array, Date, RegExp, Promise λ±μ
λΉνΈμΈ μμ±μ ν¨μλ₯Ό μ 곡νλ€.
17.2 μμ±μ ν¨μ
17.2.1 κ°μ²΄ 리ν°λ΄μ μν κ°μ²΄ μμ± λ°©μμ λ¬Έμ μ
κ°μ²΄ 리ν°λ΄μ μν κ°μ²΄ μμ± λ°©μμ
- λ¨ νλμ κ°μ²΄λ§ μμ±νλ€.
- λ°λΌμ λμΌν νλ‘νΌν°λ₯Ό κ°λ κ°μ²΄λ₯Ό μ¬λ¬ κ° μμ±ν΄μΌ νλ κ²½μ°
- λ§€λ² κ°μ νλ‘νΌν°λ₯Ό κΈ°μ ν΄μΌ νκΈ° λλ¬Έμ λΉν¨μ¨μ μ΄λ€..π₯²
17.2.2 μμ±μ ν¨μμ μν κ°μ²΄ μμ± λ°©μμ μ₯μ
μμ±μ ν¨μμ μν κ°μ²΄ μμ± λ°©μμ
- λ§μΉ κ°μ²΄(μΈμ€ν΄μ€)λ₯Ό μμ±νκΈ° μν ν νλ¦Ώ(ν΄λμ€)μ²λΌ μμ±μ ν¨μλ₯Ό μ¬μ©νμ¬
- νλ‘νΌν° κ΅¬μ‘°κ° λμΌν κ°μ²΄ μ¬λ¬κ°λ₯Ό κ°νΈνκ² μμ± ν μ μλ€.
function Circle(radius) {
// μμ±μ ν¨μ λ΄λΆμ thisλ μμ±μ ν¨μκ° μμ±ν μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν¨λ€
this.radius = radius;
this.getDiameter = function () {
return 2 * this.radius;
};
}
const circle1 = new Circle(5); // λ°μ§λ¦μ΄ 5μΈ Circle κ°μ²΄ μμ±
const circle2 = new Circle(10); // λ°μ§λ¦μ΄ 10μΈ Circle κ°μ²΄ μμ±
console.log(circle1.getDiameter()); // 10
console.log(circle2.getDiameter()); // 20
this?
thisλ κ°μ²΄ μμ μ νλ‘νΌν°λ λ©μλλ₯Ό μ°Έμ‘°νκΈ° μν μκΈ° μ°Έμ‘° λ³μλ€. thisκ° κ°λ¦¬ν€λ κ°, μ¦ this λ°μΈλ©μ ν¨μ νΈμΆ λ°©μμ λ°λΌ λμ μΌλ‘ κ²°μ λλ€.
ν¨μ νΈμΆ λ°©μthisκ° κ°λ¦¬ν€λ κ°(this λ°μΈλ©)
μΌλ° ν¨μλ‘μ νΈμΆ | μ μ κ°μ²΄ |
λ©μλλ‘μ νΈμΆ | λ©μλλ₯Ό νΈμΆν κ°μ²΄(λ§μΉ¨ν μμ κ°μ²΄) |
μμ±μ ν¨μλ‘μ νΈμΆ | μμ±μ ν¨μκ° μμ±ν μΈμ€ν΄μ€ |
17.2.3 μμ±μ ν¨μμ μΈμ€ν΄μ€ μμ±κ³Όμ
μμ±μ ν¨μμ μν μ
- νλ‘νΌν° κ΅¬μ‘°κ° λμΌν μΈμ€ν΄μ€λ₯Ό μμ±νκΈ° μν ν νλ¦Ώ(ν΄λμ€)μΌλ‘μ λμνμ¬ μΈμ€ν΄μ€λ₯Ό μμ±νλ κ²κ³Ό
- μμ±λ μΈμ€ν΄μ€λ₯Ό μ΄κΈ°ν(μΈμ€ν΄μ€ νλ‘νΌν° μΆκ° λ° μ΄κΈ°κ° ν λΉ)νλ κ²μ΄λ€.
new μ°μ°μμ ν¨κ» μμ±μ ν¨μλ₯Ό νΈμΆνλ©΄ μλ°μ€ν¬λ¦½νΈ μμ§μ λ€μκ³Ό κ°μ κ³Όμ μ κ±°μ³ μ묡μ μΌλ‘ μΈμ€ν΄μ€λ₯Ό μμ±νκ³ μΈμ€ν΄μ€λ₯Ό μ΄κΈ°νν ν μ묡μ μΌλ‘ μΈμ€ν΄μ€λ₯Ό λ°ννλ€.
- μΈμ€ν΄μ€ μμ±κ³Ό this λ°μΈλ©
- μ묡μ μΌλ‘ λΉ κ°μ²΄κ° μμ±λλ€.
- (μμ§ μμ±λμ§ μμμ§λ§) μ΄ λΉ κ°μ²΄κ° μμ±μ ν¨μκ° μμ±ν μΈμ€ν΄μ€λ€.
- μΈμ€ν΄μ€ μ΄κΈ°ν
- μμ±μ ν¨μμ κΈ°μ λμ΄ μλ μ½λκ° ν μ€μ© μ€νλμ΄
- thisμ λ°μΈλ©λμ΄ μλ μΈμ€ν΄μ€λ₯Ό μ΄κΈ°ννλ€.
- μΈμ€ν΄μ€ λ°ν
- μμ±μ ν¨μ λ΄λΆμ λͺ¨λ μ²λ¦¬κ° λλλ©΄ μμ±λ μΈμ€ν΄μ€κ° λ°μΈλ©λ thisκ° μ묡μ μΌλ‘ λ°ννλ€.
λ°μΈλ©?
λ°μΈλ©μ΄λ μλ³μμ κ°μ μ°κ²°νλ κ³Όμ μ μλ―Ένλ€.μλ₯Ό λ€μ΄, λ³μ μ μΈμ λ³μ μ΄λ¦(μλ³μ)κ³Ό ν보λ λ©λͺ¨λ¦¬ 곡κ°μ μ£Όμλ₯Ό λ°μΈλ© νλ κ²μ΄λ€.this λ°μΈλ©μ this(ν€μλλ‘ λΆλ₯λμ§λ§ μλ³μ μν μ νλ€)μ thisκ° κ°λ¦¬ν¬ κ°μ²΄λ₯Ό λ°μΈλ©νλ κ²μ΄λ€.
'π Book-Talk > λͺ¨λ JS Deep Dive' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_let, const ν€μλμ λΈλ‘ λ 벨 μ€μ½ν (0) | 2022.11.15 |
---|---|
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_μ μ λ³μμ λ¬Έμ μ (0) | 2022.11.15 |
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_μ€μ½ν (0) | 2022.11.11 |
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_ν¨μ (0) | 2022.11.11 |
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_μμ κ°κ³Ό κ°μ²΄μ λΉκ΅ (0) | 2022.11.11 |