π
(μ½μ΄ μλ°μ€ν¬λ¦½νΈ) 3. this
February 12, 2023
π κΈ°μ μ± μ€ν°λ
23λ
1μλΆν° νλ μ€μΈ κ΅μ‘μμ, λ»μ΄ λ§λ λλ£λ€κ³Ό ν¨κ» μ§ννκ² λ μ€ν°λ
μ²μ μ½μ΄ μλ°μ€ν¬λ¦½νΈ
μμ μ μ½μκ³ μ μνλ©΄μ μμ!
μμΌλ‘λ κΎΈμ€ν κΈ°μ μμ μ μ½κ³ ν¨κ» λ°μ νλ μκ°μ΄ λμμΌλ©΄ μ’κ² λ€!
μ± μ μλ λ΄μ©λ³΄λ¨, μ½μΌλ©΄μ νΌμ μ 리ν λ΄μ©λ€ μμ£Όλ‘ μμ±νμ!
π μ½μ΄ μλ°μ€ν¬λ¦½νΈ 3. this
μΌμ: 2μ 12μΌ 20μ
Quiz 1 p79. classμ this μκ°ν΄λ³΄κΈ°
class Test {
constructor() {}
method1() {
console.log(this)
}
}
const test = new Test();
test.method1(); // 1. 무μμ΄ μΆλ ₯λλμ? μ κ·Έλ κ² λ κΉμ?
const method2 = test.method1;
method2(); // 2. 무μμ΄ μΆλ ₯λλμ? μ κ·Έλ κ² λ κΉμ?
// 3. mehtod2μ λ€λ₯Έ thisλ₯Ό μ§μ νλ λ°©λ²μ΄ μμκΉμ?
μμ λ΅μ
- test κ°μ²΄
- undefined - ν¨μλ‘μ νΈμΆνμΌλ―λ‘ μ μ κ°μ²΄μΌ κ² κ°μ§λ§, classλ es6μ λμ
λμ΄ κΈ°λ³Έμ μΌλ‘
use strict
κ° μ μ©λκΈ° λλ¬Έμ λλ€. - call, apply, bind λ©μλ
Quiz 2 p83. μμ 3-18-(1)
// μμ μ½λλ₯Ό es6 μ΄νμ λ¬Έλ²μΌλ‘ ννν΄μ£ΌμΈμ!
function a() {
var argv = Array.prototype.slice.call(arguments);
argv.forEach(function(arg) {
console.log(arg);
});
}
a(1, 2, 3);
μμ λ΅μ 2κ°μ§
// 1. Array.from μ¬μ©νκΈ°
function a() {
var argv = Array.from(arguments);
argv.forEach(function(arg) {
console.log(arg);
});
}
a(1, 2, 3);
// 2. rest parameter μ¬μ©νκΈ°
function a(...argv) {
argv.forEach(arg => console.log(arg))
}
a(1, 2, 3);
Quiz 3 p87. μμ 3-25
var func = function(a, b, c) {
console.log(a + b + c);
};
func(1, 2, 3);
// 1. bindλ₯Ό μ¬μ©νμ¬ μμ ν¨μμ νλΌλ―Έν°λ₯Ό λλ μ λ°λ ν¨μλ€λ‘ λλ μ£ΌμΈμ!
1. μμ λ΅μ
var binding1 = func.bind(null, 1);
var binding2 = binding1.bind(null, 2);
var binding3 = binding2.bind(null, 3);
/*
binding1(2, 3); // 6
binding2(3); // 6
binding3(); // 6
*/
// 2. (μΆκ°) μμ bindingν¨μλ€μ 보μκ³ λ μ€λ₯΄μλ κ°λ
μ΄ μλμ?(ννΈ: FP)
2. μμλ΅μ
// μ°λ¦¬κ° λ°°μ λ ν¨μν νλ‘κ·Έλλ°μμμ `currying`μ΄ λ μ€λ₯΄μλ©΄ νμ΄μ!
var currying = (a) => (b) => (c) =>{
console.log(a + b + c);
};
var currying1 = currying(1);
var currying2 = currying1(2);
/*
currying1(2)(3); // 6
currying2(3); // 6
*/
Quiz 4 p93. κ°λ + p77. μμ 3-12-(2)
[1, 2, 3, 4, 5].forEach(function(x) {
console.log(this, x);
});
// 1. μμ μμ μμ thisλ 무μμ κ°λ¦¬ν€κ³ μλμ?
// 2. thisλ₯Ό λ°κΎΈλ μ½λλ₯Ό μμ±ν΄μ£ΌμΈμ!
1, 2. μμ λ΅μ
var self = 'λ΄κ° μ§μ ν this';
[1, 2, 3, 4, 5].forEach(function(x) {
console.log(this, x);
}, self);
// 3. (μΆκ°) μμ forEachκ° λ°λ μ½λ°± ν¨μλ₯Ό νμ΄ν ν¨μλ‘ μμ±νλ©΄ μ΄λ€ κ²°κ³Όκ° λμ¬κΉμ?
3. μμ λ΅μ
var self = 'λ΄κ° μ§μ ν this';
[1, 2, 3, 4, 5].forEach(x =>
console.log(this, x)
, self);
// thisκ° μ μ κ°μ²΄λ₯Ό κ°λ¦¬ν€κ³ μμ΅λλ€. νμ΄ν ν¨μλ λ°λ‘ thisλ₯Ό λ°μΈλ©νμ§ μκΈ° λλ¬Έ!