ν΄λμ€ λͺΈμ²΄μ μ μν μ μλ λ©μλλ constructor
(μμ±μ), νλ‘ν νμ
λ©μλ, μ μ λ©μλμ μΈ κ°μ§κ° μλ€.
constructor
constructor
λ μΈμ€ν΄μ€λ₯Ό μμ±νκ³ μ΄κΈ°ννκΈ° μν νΉμν λ©μλλ€. constructor
μ μ΄λ¦μ λ³κ²½ν μ μλ€.
class Person {
constructor(name) {
this.name = name; // μΈμ€ν΄μ€ μμ± λ° μ΄κΈ°ν
}
}
κ°λ°μ λꡬμ μ½μμμ console.dir
μ ν΅ν΄ ν΄λμ€μ λ΄λΆλ₯Ό μ΄ν΄λ³΄λ©΄ μλμ κ°λ€.
ν΄λμ€λ νκ°λμ΄ ν¨μ κ°μ²΄κ° λλ―λ‘, ν΄λμ€λ ν¨μ κ°μ²΄ κ³ μ μ νλ‘νΌν°λ₯Ό λͺ¨λ κ°κ³ μλ€. ν¨μμ λμΌνκ² νλ‘ν νμ
κ³Ό μ°κ²°λμ΄ μκ³ , μμ μ μ€μ½ν 체μΈμ ꡬμ±νλ€. λͺ¨λ ν¨μ κ°μ²΄κ° κ°μ§κ³ μλ prototype
νλ‘νΌν°κ° κ°λ¦¬ν€λ νλ‘ν νμ
κ°μ²΄μ constructor
νλ‘νΌν°λ ν΄λμ€ μκΈ° μμ μ κ°λ¦¬ν€κ³ μλ€. μ΄λ ν΄λμ€κ° μΈμ€ν΄μ€λ₯Ό μμ±νλ μμ±μ ν¨μμμ μλ―Ένλ€. λ°λΌμ new
μ°μ°μμ ν¨κ» ν΄λμ€λ₯Ό νΈμΆνλ©΄ ν΄λμ€λ μΈμ€ν΄μ€λ₯Ό μμ±ν΄ λ°ννλ€.
ν΄λμ€κ° μμ±ν μΈμ€ν΄μ€μ λ΄λΆλ₯Ό μ΄ν΄λ³΄μ.
Person
ν΄λμ€μ constructor
λ΄λΆμμ this
μ μΆκ°ν name
νλ‘νΌν°κ° ν΄λμ€κ° μμ±ν μΈμ€ν΄μ€μ νλ‘νΌν°λ‘ μΆκ°λ κ²μ νμΈν μ μλ€. λ°λΌμ μμ±μ ν¨μμ λ§μ°¬κ°μ§λ‘ constructor
λ΄λΆμμ this
μ μΆκ°ν νλ‘νΌν°λ μΈμ€ν΄μ€ νλ‘νΌν°κ° λλ©°, constructor
λ΄λΆμ this
λ μμ±μ ν¨μμ λ§μ°¬κ°μ§λ‘ ν΄λμ€κ° μμ±ν μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν¨λ€.
κ·Έλ°λ°, ν΄λμ€κ° νκ°λμ΄ μμ±λ ν¨μ κ°μ²΄λ ν΄λμ€κ° μμ±ν μΈμ€ν΄μ€ μ΄λμμλ constructor
λ©μλλ₯Ό μ°Ύμλ³Ό μ μλ€. μ΄λ constructor
κ° λ¨μν λ©μλκ° μλλΌλ κ²μ μλ―Ένλ€. constructor
λ λ©μλλ‘ ν΄μλλ κ²μ΄ μλλΌ ν΄λμ€κ° νκ°λμ΄ μμ±ν ν¨μ κ°μ²΄ μ½λμ μΌλΆκ° λλ€. μ¦, ν΄λμ€ μ μκ° νκ°λλ©΄ constructor
μ κΈ°μ λ λμμ μννλ ν¨μ κ°μ²΄κ° μμ±λλ€.
ν΄λμ€μ constructor μ¬μ© μ μ£Όμμ
constructorλ ν΄λμ€ λ΄μ μ΅λ ν κ°λ§ μ‘΄μ¬ν μ μλ€.
class Person {
constructor() {}
constructor() {}
}
// SyntaxError: A class may only have one constructor
λ§μ½ ν΄λμ€κ° 2κ° μ΄μμ constructor
λ₯Ό ν¬ν¨νκ² λλ©΄ λ¬Έλ² μλ¬κ° λ°μνλ€.
constructorλ μλ΅ν μ μλ€.
class Person {
// μλμ κ°μ΄ λΉ constructorκ° μ묡μ μΌλ‘ μ μλ¨
// constructor() {}
}
// λΉ κ°μ²΄ μμ±
const me = new Person();
console.log(me); // Person {}
constructor
λ₯Ό μλ΅νλ©΄ ν΄λμ€μ λΉ constructor
κ° μ묡μ μΌλ‘ μ μλλ©°, μ΄ λΉ constructor
μ μν΄ λΉ κ°μ²΄λ₯Ό μμ±νλ€.
λ€λ§, μΈμ€ν΄μ€λ₯Ό μ΄κΈ°ννλ €λ©΄ constructor
λ₯Ό μλ΅ν΄μ μλλ€. constructor
λ΄μμ μΈμ€ν΄μ€ μμ±κ³Ό λμμ μΈμ€ν΄μ€ νλ‘νΌν° μΆκ°λ₯Ό ν΅ν΄ μΈμ€ν΄μ€μ μ΄κΈ°νλ₯Ό μ€ννκΈ° λλ¬Έμ΄λ€.
κ³ μ κ°μΌλ‘ μ΄κΈ°νλ μΈμ€ν΄μ€λ₯Ό μμ±νλ €λ©΄ constructor
λ΄λΆμμ this
μ μΈμ€ν΄μ€ νλ‘νΌν°λ₯Ό μΆκ°νλ€.
class Person {
constructor() {
this.name = 'Jung',
this.address = 'Daegu';
}
}
const me = new Person();
console.log(me); // Person {name: "Jung", address: "Daegu"}
μΈμ€ν΄μ€λ₯Ό μμ±ν λ ν΄λμ€ μΈλΆμμ μΈμ€ν΄μ€ νλ‘νΌν°μ μ΄κΈ°κ°μ μ λ¬νλ €λ©΄ constructor
μ λ§€κ°λ³μλ₯Ό μ μΈνκ³ μΈμ€ν΄μ€λ₯Ό μμ±ν λ μ΄κΈ°κ°μ μ λ¬νλ€. ν΄λΉ μ΄κΈ°κ°μ constructor
μ λ§€κ° λ³μμ μ λ¬λλ€.
class Person {
constructor(name, address) {
this.name = name,
this.address = address;
}
}
const me = new Person("Jung", "Daegu"); // μΈμλ‘ μ΄κΈ°κ° μ λ¬ ⇒ ν΄λΉ μ΄κΈ°κ°μ constructorμ μ λ¬λ¨
console.log(me); // Person {name: "Jung", address: "Daegu"}
constructorλ λ³λμ λ°νλ¬Έμ κ°μ§ μμμΌ νλ€.
new
μ°μ°μμ ν¨κ» ν΄λμ€κ° νΈμΆλλ©΄ μμ±μ ν¨μμ λμΌνκ² μ묡μ μΌλ‘ this
, μ¦ μΈμ€ν΄μ€λ₯Ό λ°ννλ€.
λ§μ½ this
κ° μλ λ€λ₯Έ κ°μ²΄λ₯Ό λͺ
μμ μΌλ‘ λ°ννλ©΄ this
, μ¦ μΈμ€ν΄μ€κ° λ°νλμ§ λͺ»νκ³ return
λ¬Έμ λͺ
μν κ°μ²΄κ° λ°νλλ€.
class Person {
constructor(name) {
this.name = name;
return {};
}
}
const me = new Person('Jung');
console.log(me); // {}
λ§μ½ λͺ
μμ μΌλ‘ μμκ°μ λ°ννλ©΄ μμκ° λ°νμ 무μλκ³ μ묡μ μΌλ‘ this
κ° λ°νλλ€.
class Person {
constructor(name) {
this.name = name;
return 100;
}
}
const me = new Person('Jung');
console.log(me); // Person { name: "Jung" }
μ΄μ²λΌ constructor
λ΄λΆμμ λͺ
μμ μΌλ‘ this
κ° μλ λ€λ₯Έ κ°μ λ°ννλ κ²μ ν΄λμ€μ κΈ°λ³Έ λμμ νΌμνλ κ²μ΄λ―λ‘ constructor
λ΄λΆμμ return
λ¬Έμ λ°λμ μλ΅ν΄μΌ νλ€.
νλ‘ν νμ λ©μλ
μμ±μ ν¨μλ₯Ό μ¬μ©νμ¬ μΈμ€ν΄μ€λ₯Ό μμ±νλ κ²½μ° νλ‘ν νμ λ©μλλ₯Ό μμ±νκΈ° μν΄ μλ μμ μ κ°μ΄ λͺ μμ μΌλ‘ νλ‘ν νμ μ λ©μλλ₯Ό μΆκ°ν΄μΌ νλ€.
// μμ±μ ν¨μ
function Person(name) {
this.name = name;
}
// νλ‘ν νμ
λ©μλ
Person.prototype.sayHi = function () {
console.log('Hi! My name is ' + this.name);
};
const me = new Person('Jung');
me.sayHi(); // Hi! My name is Jung
νμ§λ§ ν΄λμ€ λͺΈμ²΄μμ μ μν λ©μλλ ν΄λμ€μ prototype
νλ‘νΌν°μ λ©μλλ₯Ό μΆκ°νμ§ μμλ κΈ°λ³Έμ μΌλ‘ νλ‘ν νμ
λ©μλκ° λλ€.
// ν΄λμ€
class Person {
// μμ±μ
constructor(name) {
this.name = name;
}
// νλ‘ν νμ
λ©μλ
sayHi() {
console.log('Hi! My name is ' + this.name);
};
}
const me = new Person('Jung');
me.sayHi(); // Hi! My name is Jung
μμ±μ ν¨μμ λ§μ°¬κ°μ§λ‘ ν΄λμ€κ° μμ±ν μΈμ€ν΄μ€λ νλ‘ν νμ 체μΈμ μΌμμ΄ λλ€.
// me κ°μ²΄μ νλ‘ν νμ
μ Person.prototype
Object.getPrototypeOf(me) === Person.prototype; // true
me instanceof Person; // true
// Person.prototypeμ νλ‘ν νμ
μ Object.prototype
Object.getPrototypeOf(Person.prototype) === Object.prototype; // true
me instanceof Object; // true
// me κ°μ²΄μ constructorλ Person ν΄λμ€
me.constructor === Person; // true
ν΄λμ€ λͺΈμ²΄μμ μ μν λ©μλλ μΈμ€ν΄μ€μ νλ‘ν νμ μ μ‘΄μ¬νλ νλ‘ν νμ λ©μλκ° λλ©°, μΈμ€ν΄μ€λ νλ‘ν νμ λ©μλλ₯Ό μμ λ°μ μ¬μ©ν μ μλ€.
νλ‘ν νμ 체μΈμ κΈ°μ‘΄μ λͺ¨λ κ°μ²΄ μμ± λ°©μ λΏλ§ μλλΌ ν΄λμ€μ μν΄ μμ±λ μΈμ€ν΄μ€μλ λμΌνκ² μ μ©λλ€. κ²°κ΅ ν΄λμ€λ μμ±μ ν¨μμ λ§μ°¬κ°μ§λ‘ μΈμ€ν΄μ€λ₯Ό μμ±νλ μΌμ’ μ μμ±μ ν¨μλΌκ³ λΆ μ μμΌλ©°, λ°λΌμ ν΄λμ€λ νλ‘ν νμ κΈ°λ°μ κ°μ²΄ μμ± λ©μ»€λμ¦μ΄λ€.
μ μ λ©μλ
μ μ λ©μλλ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μμλ νΈμΆν μ μλ λ©μλλ₯Ό λ§νλ€. μμ±μ ν¨μμ κ²½μ° μ μ λ©μλλ₯Ό μμ±νκΈ° μν΄ μλ μμ μ κ°μ΄ λͺ μμ μΌλ‘ μμ±μ ν¨μμ λ©μλλ₯Ό μΆκ°ν΄μΌ νλ€.
// μμ±μ ν¨μ
function Person(name) {
this.name = name;
}
// μ μ λ©μλ
Person.sayHi = function () {
console.log('Hi!');
};
Person.sayHi(); // Hi!
λ°λ©΄ ν΄λμ€μμλ λ©μλμ static
ν€μλλ₯Ό λΆμ΄λ©΄ μ μ λ©μλ(ν΄λμ€ λ©μλ)κ° λλ€.
class Persons {
// μμ±μ
constructor(name) {
this.name = name;
}
// μ μ λ©μλ
static sayHi() {
console.log('Hi');
}
}
μ μ λ©μλλ ν΄λμ€μ λ°μΈλ©λ λ©μλκ° λλ€. ν΄λμ€λ ν¨μ κ°μ²΄λ‘ νκ°λλ―λ‘ μμ λ§μ νλ‘νΌν°/λ©μλλ₯Ό μμ ν μ μλ€. ν΄λμ€λ ν΄λμ€ μ μ(ν΄λμ€ μ μΈλ¬Έμ΄λ ν΄λμ€ ννμ)κ° νκ°λλ μμ μ ν¨μ κ°μ²΄κ° λλ―λ‘ μΈμ€ν΄μ€μ λ¬λ¦¬ λ³λ€λ₯Έ μμ± κ³Όμ μ΄ νμνμ§ μλ€. λ°λΌμ μ μ λ©μλλ ν΄λμ€ μ μ μ΄ν μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μμλ νΈμΆν μ μλ€.
μ μ λ©μλλ νλ‘ν νμ λ©μλμ²λΌ μΈμ€ν΄μ€λ‘ νΈμΆνλ κ²μ΄ μλλΌ, ν΄λμ€λ‘ νΈμΆνλ€. λν μ μ λ©μλλ μΈμ€ν΄μ€λ‘ νΈμΆν μ μλ€. μ μ λ©μλκ° λ°μΈλ©λ ν΄λμ€λ μΈμ€ν΄μ€μ νλ‘ν νμ μ²΄μΈ μμ μ‘΄μ¬νμ§ μκΈ° λλ¬Έμ΄λ€. μ¦, μΈμ€ν΄μ€μ νλ‘ν νμ μ²΄μΈ μμλ ν΄λμ€κ° μ‘΄μ¬νμ§ μκΈ° λλ¬Έμ μΈμ€ν΄μ€λ‘ ν΄λμ€μ λ©μλλ₯Ό μμλ°μ μ μλ€.
// μ μ λ©μλλ ν΄λμ€λ‘ νΈμΆ
Person.sayHi();
// μ μ λ©μλλ μΈμ€ν΄μ€λ‘ νΈμΆ λΆκ°
const me = new Person('Jung');
me.sayHi(); // TypeError: me.sayHi is not a function
μ μ λ©μλμ νλ‘ν νμ λ©μλμ μ°¨μ΄
μ μ λ©μλμ νλ‘ν νμ λ©μλμ μ°¨μ΄λ λ€μκ³Ό κ°λ€.
- μ μ λ©μλμ νλ‘ν νμ λ©μλλ μμ μ΄ μν΄ μλ νλ‘ν νμ 체μΈμ΄ λ€λ₯΄λ€.
- μ μ λ©μλλ ν΄λμ€λ‘ νΈμΆνκ³ νλ‘ν νμ λ©μλλ μΈμ€ν΄μ€λ‘ νΈμΆνλ€.
- μ μ λ©μλλ μΈμ€ν΄μ€ νλ‘νΌν°λ₯Ό μ°Έμ‘°ν μ μμ§λ§ νλ‘ν νμ λ©μλλ μΈμ€ν΄μ€ νλ‘νΌν°λ₯Ό μ°Έμ‘°ν μ μλ€.
class Square {
static area(width, height) {
return width * height;
}
}
console.log(Square.area(10, 10); // 100
μ μμ μμ μ μ λ©μλ area
λ 2κ°μ μΈμλ₯Ό λ°μ λ©΄μ μ κ³μ°νλ€. μ΄λ μ μ λ©μλ area
λ μΈμ€ν΄μ€ νλ‘νΌν°λ₯Ό μ°Έμ‘°νμ§ μλλ€. λ§μ½ μΈμ€ν΄μ€ νλ‘νΌν°λ₯Ό μ°Έμ‘°ν΄μΌ νλ€λ©΄ μ μ λ©μλκ° μλλΌ νλ‘ν νμ
λ©μλλ₯Ό μ¬μ©ν΄μΌ νλ€.
class Square {
constructor(width, height) {
this.width = width;
this.height = height;
}
area() {
return this.width * this.height;
}
}
const square = new Square(10, 10);
console.log(square.area()); // 100
λ©μλ λ΄λΆμ this
λ λ©μλλ₯Ό μμ ν κ°μ²΄κ° μλλΌ λ©μλλ₯Ό νΈμΆν κ°μ²΄, μ¦ λ©μλ μ΄λ¦ μμ λ§μΉ¨ν(.) μ°μ°μ μμ κΈ°μ ν κ°μ²΄μ λ°μΈλ©λλ€. λ°λΌμ νλ‘ν νμ
λ©μλ λ΄λΆμ this
λ νλ‘ν νμ
λ©μλλ₯Ό νΈμΆν μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν¨λ€. μ μμ μλ square
κ°μ²΄λ‘ νλ‘ν νμ
λ©μλ area
λ₯Ό νΈμΆνκΈ° λλ¬Έμ area
λ΄λΆμ this
λ square
κ°μ²΄λ₯Ό κ°λ¦¬ν¨λ€. λ°λ©΄, μ μ λ©μλλ ν΄λμ€λ‘ νΈμΆν΄μΌ νλ―λ‘ μ μ λ©μλ λ΄λΆμ this
λ μΈμ€ν΄μ€κ° μλ ν΄λμ€λ₯Ό κ°λ¦¬ν¨λ€.
μ¦, νλ‘ν νμ
λ©μλμ μ μ λ©μλ λ΄λΆμ this
λ°μΈλ©μ΄ λ€λ₯΄λ€. λ°λΌμ λ©μλ λ΄λΆμμ μΈμ€ν΄μ€ νλ‘νΌν°λ₯Ό μ°Έμ‘°ν νμκ° μλ€λ©΄ this
λ₯Ό μ¬μ©ν΄μΌ νλ©°, κ·Έ κ²½μ° νλ‘ν νμ
λ©μλλ‘ μ μν΄μΌ νλ€. λ©μλ λ΄λΆμμ this
λ₯Ό μ¬μ©νμ§ μλλΌλ νλ‘ν νμ
λ©μλλ‘ μ μν μ μμ§λ§, λ°λμ μΈμ€ν΄μ€λ₯Ό μμ±ν ν νΈμΆν΄μΌ νλ―λ‘ κ·Έ κ²½μ° μ μ λ©μλλ‘ μ μνλ κ²μ΄ μ’λ€.
νμ€ λΉνΈμΈ κ°μ²΄μΈ Math
, Number
, JSON
, Object
, Reflect
λ±μ λ€μν μ μ λ©μλλ₯Ό κ°μ§κ³ μλ€. ν΄λΉ μ μ λ©μλλ μ ν리μΌμ΄μ
μ μμμ μ¬μ©ν μ νΈλ¦¬ν° ν¨μλ€.
// νμ€ λΉνΈμΈ κ°μ²΄μ μ μ λ©μλ
Math.max(1, 2, 3); // 3
Number.isNaN(NaN); // true
JSON.stringify({ a: 1 }); // "{"a":1}"
Object.is({}, {}); // false
Reflect.has({ a: 1 }, 'a'); // true
μ΄μ²λΌ ν΄λμ€ λλ μμ±μ ν¨μλ₯Ό νλμ λ€μμ€νμ΄μ€λ‘ μ¬μ©νμ¬ μ μ λ©μλλ₯Ό λͺ¨μ λμΌλ©΄ μ΄λ¦ μΆ©λ κ°λ₯μ±μ μ€μ¬ μ£Όκ³ κ΄λ ¨ ν¨μλ€μ ꡬ쑰νν μ μλ ν¨κ³Όκ° μλ€. μ΄ κ°μ μ΄μ λ‘ μ μ λ©μλλ μ ν리μΌμ΄μ μ μμμ μ¬μ©ν μ νΈλ¦¬ν° ν¨μλ₯Ό μ μ ν¨μλ‘ μ μνμ§ μκ³ λ©μλλ‘ κ΅¬μ‘°νν λ μ μ©νλ€.
ν΄λμ€μμ μ μν λ©μλμ νΉμ§
ν΄λμ€μμ μ μν λ©μλλ λ€μκ³Ό κ°μ νΉμ§μ κ°λλ€.
function
ν€μλλ₯Ό μλ΅ν λ©μλ μΆμ½ ννμ μ¬μ©νλ€.- κ°μ²΄ 리ν°λ΄κ³Όλ λ¬λ¦¬ ν΄λμ€μ λ©μλλ₯Ό μ μν λλ μ½€λ§κ° νμ μλ€.
- μ묡μ μΌλ‘ strict modeλ‘ μ€νλλ€.
for ... in
λ¬Έμ΄λObject.keys
λ©μλ λ±μΌλ‘ μ΄κ±°ν μ μλ€. μ¦, νλ‘νΌν°μ μ΄κ±° κ°λ₯ μ¬λΆλ₯Ό λνλ΄λ νλ‘νΌν° μ΄νΈλ¦¬λ·°νΈ[[Enumerable]]
μ κ°μ΄false
λ€.- λ΄λΆ λ©μλ
[[Construct]]
λ₯Ό κ°μ§ μλ non-constructorλ€. λ°λΌμnew
μ°μ°μμ ν¨κ» νΈμΆν μ μλ€.
ν΄λμ€μ μΈμ€ν΄μ€ μμ± κ³Όμ
new
μ°μ°μμ ν¨κ» ν΄λμ€λ₯Ό νΈμΆνλ©΄ μμ±μ ν¨μμ λ§μ°¬κ°μ§λ‘ ν΄λμ€μ λ΄λΆ λ©μλ [[Construct]]
κ° νΈμΆλλ€. ν΄λμ€λ new
μ°μ°μ μμ΄ νΈμΆν μ μλ€. μ΄λ λ€μκ³Ό κ°μ κ³Όμ μ κ±°μ³ μΈμ€ν΄μ€κ° μμ±λλ€.
1. μΈμ€ν΄μ€ μμ±κ³Ό this λ°μΈλ©
new
μ°μ°μμ ν¨κ» ν΄λμ€λ₯Ό νΈμΆνλ©΄ constructor
μ λ΄λΆ μ½λκ° μ€νλκΈ°μ μμ μ묡μ μΌλ‘ λΉ κ°μ²΄κ° μμ±λλ€. μ΄ λΉ κ°μ²΄κ° λ°λ‘ ν΄λμ€κ° μμ±νλ μΈμ€ν΄μ€κ° λλ€. μ΄ λ ν΄λμ€κ° μμ±ν μΈμ€ν΄μ€μ νλ‘ν νμ
μΌλ‘ ν΄λμ€μ prototype
νλ‘νΌν°κ° κ°λ¦¬ν€λ κ°μ²΄κ° μ€μ λλ€. κ·Έλ¦¬κ³ μ묡μ μΌλ‘ μμ±λ λΉ κ°μ²΄, μ¦ μΈμ€ν΄μ€λ this
μ λ°μΈλ©λλ€. λ°λΌμ constructor
λ΄λΆμ this
λ ν΄λμ€κ° μμ±ν μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν¨λ€.
2. μΈμ€ν΄μ€ μ΄κΈ°ν
constructor
μ λ΄λΆ μ½λκ° μ€νλμ΄ this
μ λ°μΈλ©λμ΄ μλ μΈμ€ν΄μ€λ₯Ό μ΄κΈ°ννλ€. μ¦, this
μ λ°μΈλ©λμ΄ μλ μΈμ€ν΄μ€μ νλ‘νΌν°λ₯Ό μΆκ°νκ³ constructor
κ° μΈμλ‘ μ λ¬λ°μ μ΄κΈ°κ°μΌλ‘ μΈμ€ν΄μ€μ νλ‘νΌν°κ°μ μ΄κΈ°ννλ€. λ§μ½ constructor
κ° μλ΅λμλ€λ©΄ μ΄ κ³Όμ λ μλ΅λλ€.
3. μΈμ€ν΄μ€ λ°ν
ν΄λμ€μ λͺ¨λ μ²λ¦¬κ° λλλ©΄ μμ±λ μΈμ€ν΄μ€κ° λ°μΈλ©λ this
κ° μ묡μ μΌλ‘ λ°νλλ€.