728x90
λ°μν
π‘ μ€μ΅ ν¬μΈνΈ!
- μ΄μ μ κ°μ¬λμ μμ μ λ€μΌλ©΄μ, μΌλ°μ μΈ ννμ function κ³Ό arrow function μ΄ μμ ν κ°μ κ²μΈ μ€ μκ³ λ¬΄μμ arrow function μΌλ‘ λ§λ€μ΄μ this λ₯Ό μ¬μ©νλ €λ€κ° μνλ κΈ°λ₯μ΄ μ λλ‘ μλνμ§ μμ μ μ΄ μμλ€.
- κ·Έλμ μμΈμ μ λͺ¨λ₯Έ μ± μΌλ¨ μΌλ°μ μΈ ννμ function μΌλ‘ μμ ν΄μ£Όμλλ° μ΄λ² μμ μ ν΅ν΄ this μ λν΄ μ’ λ μ¬λμκ² κ³΅λΆν μ μμλ€.
π this 1
this λ₯Ό κ·Έλ₯ μ¬μ©νκ±°λ, μΌλ° ν¨μ μμμ μ¬μ©νλ©΄ window λ₯Ό μλ―Ένλ€.
νμ§λ§, μ¬μ€μ μ μ 곡κ°μμ λ§λ€λ©΄ this κ° μλ ν¨μλ₯Ό ν¬ν¨νλ object κ° window μΈ κ²μ΄λ―λ‘, 2λ²κ³Ό λμΌνλ€κ³ λ΄λ 무방νλ€.
π€ ex1.
console.log(this); // this λ window.
π€ ex2.
function func2(){
console.log(this);
}
func2(); // this λ κΈ°λ³Έμ μΌλ‘ window, strict mode μμλ undefined.
π this 2
object λ΄ ν¨μ μμμ this λ₯Ό μ¬μ©νλ©΄, this κ° μλ ν¨μλ₯Ό ν¬ν¨νλ object λ₯Ό μλ―Ένλ€.
π€ ex3.
let obj3 = {
data3 : "Seoyun",
func3 : function(){
console.log(this)
}
}
obj3.func3(); // this κ° μλ func3() ν¨μλ₯Ό ν¬ν¨νκ³ μλ object, μ¦ μ¬κΈ°μλ obj3 μ μλ―Έ.
π€ ex4.
let obj4 = {
data4 : {
func4 : function(){
console.log(this);
}
}
}
obj4.data4.func4(); // this κ° μλ func4() ν¨μλ₯Ό ν¬ν¨νκ³ μλ object, μ¦ μ¬κΈ°μλ data4 λ₯Ό μλ―Έ.
π€ ex5.
let obj5 = {
data5 : {
func5_1 : ()=>{
console.log(this);
},
func5_2 : function(){
console.log(this);
},
func5_3(){
console.log(this);
}
}
}
obj5.data5.func5_1(); // arrow function μ this κ°μ ν¨μ λ°κΉ₯μμ κ·Έλλ‘ κ°μ Έμ€λ―λ‘, window λ₯Ό μλ―Έ.
obj5.data5.func5_2(); // this κ° μλ func5_2() ν¨μλ₯Ό ν¬ν¨νκ³ μλ object, μ¦ μ¬κΈ°μλ data5 λ₯Ό μλ―Έ.
obj5.data5.func5_3(); // func5_2() ν¨μλ func5_3() ν¨μμ²λΌ μ¬μ© κ°λ₯.
π€ ex6.
// ν¨μλ λ³μλ₯Ό μ μ곡κ°μμ λ§λ€λ©΄ { window } μ 보κ΄.
function func6(){
console.log(this);
}
func6(); // this λ κΈ°λ³Έμ μΌλ‘ window, strict mode μμλ undefined.
window.func6(); // this λ window.
π this 3
constructor ν¨μ μμμ this λ₯Ό μ¬μ©νλ©΄ μλ‘ μμ±λλ object λ₯Ό μλ―Ένλ€.
π€ ex7.
function constructor7(){
this.name7 = 'Seoyun';
}
let obj7 = new constructor7();
obj7; // {name7: 'Seoyun'} μ΄λΌλ object μμ±!
π this 4
eventListener μμμμ this λ event.currentTarget κ³Ό λμΌ
π€ ex8.
<button id="btn">λ²νΌ</button>
document.getElementById('btn').addEventListener('click', function(e){
console.log(this); // e.currentTarget κ³Ό λμΌνκ² btn νκ·Έλ₯Ό μλ―Έ.
console.log(e.currentTarget); // btn νκ·Έλ₯Ό μλ―Έ.
let arr8 = [1, 2, 3];
arr8.forEach(function(el){
console.log(el); // 1, 2, 3 μ΄ μμ°¨μ μΌλ‘ λμ΄.
console.log(this); // this 1 μ ν΄λΉνλ―λ‘ this λ window λ₯Ό μλ―Έ.
})
})
π this λΉκ΅ν΄λ³΄κΈ°
π€ ex9.
let obj9 = {
names9 : ['Seoyun', 'Suin', 'Inwoo'],
func9 : function(){
console.log(this); // this κ° μλ μ΅λͺ
ν¨μλ₯Ό ν¬ν¨νκ³ μλ object, μ¦ μ¬κΈ°μλ obj9 μ μλ―Έ.
obj9.names9.forEach(function(el){
console.log(this); // this κ° μλ μ΅λͺ
ν¨μλ κ·Έλ₯ μΌλ°ν¨μμ΄λ―λ‘ this λ window λ₯Ό μλ―Έ.
})
obj9.names9.forEach((el)=>{
console.log(this); // arrow function μ this κ°μ ν¨μ λ°κΉ₯μμ κ·Έλλ‘ κ°μ Έμ€λ―λ‘, μ¦ μ¬κΈ°μλ obj9 μ μλ―Έ.
})
}
}
obj9.func9();
728x90
λ°μν
'[κ°λ°] Practice > JavaScript ES6' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JavaScript / ES6] λ³μ μ°μ΅λ¬Έμ νκΈ° (0) | 2022.04.11 |
---|---|
[JavaScript / ES6] λ³μ μ λ¬Έλ² μ΄μ 리νκΈ°_2 (0) | 2022.04.11 |
[JavaScript / ES6] λ³μ μ λ¬Έλ² μ΄μ 리νκΈ° (0) | 2022.04.11 |
[JavaScript / ES6] this & arrow function μ°μ΅λ¬Έμ νκΈ° (0) | 2022.04.11 |
[JavaScript / ES6] Arrow function μμ보기 (0) | 2022.04.10 |