π±
220813(ν )
August 13, 2022
πͺ΄ μ±μ₯μΌμ§
μ±
ν볡ν μ΄κΈ°μ£Όμμ(μ¨μΈ λ€μ΄μ΄)
μ λ΄μ©μ μκ·Ήλ°μ μμνλ μλ°ν μ±μ₯κΈ°λ‘
μ΄μμλ κ½κ³Ό μ£½μ κ½μ μ΄λ»κ² ꡬλ³νλκ°?
μ±μ₯νκ³ μλ κ²μ΄ μ΄μ μλ κ²μ΄λ€.
μλͺ μ μ μΌν μ¦κ±°λ μ±μ₯μ΄λ€!
π³ ν€μλ
μ΅λν κ°λ¨νκ² μ 리, μΆνμ 보면μ μ€μ€λ‘ μ€λͺ
βββ JavaScript
this 2nd
bind λ©μλ
call λ©μλμ μ μ¬νμ§λ§, call λ©μλλ κ°μ²΄μ μΈμλ₯Ό λ°μ λ°λ‘ νΈμΆνλ λ°λ©΄ bindμ κ²½μ° ν΄λΉ κ°μ²΄ νΉμ μΈμλ₯Ό λ°μ ν¨μλ₯Ό λ°ν
var func = function (a, b, c) {
console.log(this, a, b, c);
};
var bindFunc = func.bind({ test: 1 });
bind(1, 2, 3);
// {test: 1} 1 2 3 μΆλ ₯
// μ΄λ κ² bind λ©μλκ° μ μ©λ ν¨μλ νμΈμ΄ κ°λ₯(μ½λλ₯Ό μΆμ νκΈ°μ μ©μ΄)
console.log(func.name); // func
console.log(bindFunc.name); // bound func
λ©μλ λ΄λΆμμ ν¨μ νΈμΆ μ λ©μλμ thisλ₯Ό λ°λΌλ³΄κ² νκΈ°
var objCall = {
method: function () {
console.log(this);
var inner = function () {
console.log(this);
};
inner().call(this); // λ©μλμ this, μ¦ objCall κ°μ²΄λ₯Ό μ λ¬νλ©° νΈμΆ
},
};
var objBind = {
method: function () {
console.log(this);
var inner = function () {
console.log(this);
}.bind(this); // μ μ΄μ ν¨μλ₯Ό ν λΉν λ, λ©μλμ thisμΈ objBind κ°μ²΄λ₯Ό μ λ¬
inner();
},
};
β μ½λ°±ν¨μλ₯Ό μΈμλ‘ λ°λ λ©μλ μ€ μΌλΆλ thisλ‘ μ§μ ν κ°μ²΄λ₯Ό μΈμλ‘ κ°μ΄ λ°μ
var arr = [1, 2, 3];
// 1. λ©μλ λ΄μμ μ½λ°±ν¨μκ° νΈμΆλλ―λ‘ this -> window
arr.forEach(function (value) {
console.log(value);
console.log(this);
});
// 2. μ½λ°±ν¨μκ° λ°μΈλ©ν thisλ₯Ό μ λ¬νμμΌλ―λ‘ this -> {test: 1}
arr.forEach(
function (value) {
console.log(value);
console.log(this);
},
{ test: 1 },
);
/* 3. 2λ²μμ μ½λ°±μ νμ΄νν¨μλ‘ νλ€λ©΄? => this -> window
νμ΄νν¨μλ μ€ν 컨ν
μ€νΈμμ Thisbinding κ³Όμ μ΄ μκΈ° λλ¬Έ
μ¦, λ°μΈλ©ν κ°μ²΄λ₯Ό μ λ¬ν΄μ€λ λ°μΈλ© μ체λ₯Ό νμ§ μμ! */
arr.forEach(
(value) => {
console.log(value);
console.log(this);
},
{ test: 1 },
);