μλ°μ€ν¬λ¦½νΈμ κ°μ²΄μ κ΅¬μ± μμ, μ κ·Ό λ°©λ² λ±μ λ΄μ©μ ν¬ν¨νκ³ μμ΅λλ€. π
νλ‘κ·Έλλ°μμ κ°μ²΄(Object
)λ μμ£Ό μ¬μ©λκ³ μΈκΈλλ μμ μ€ νλμΈλ°, μλ°μ€ν¬λ¦½νΈμμ κ°μ²΄λ κ΄λ ¨λ ν¨μμ λ°μ΄ν°μ μ§ν©μΌλ‘ μ μν μ μλ€.
μ¬κΈ°μ μκ°λλ κ°μ₯ κ°κΉμ΄ κΈ°μ΅μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(OOP)μ΄ μλκΉ μΆλ€. μλ°μ€ν¬λ¦½νΈλ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° μΈμ΄μ΄λ©° μ€ν¬λ¦½νΈ μΈμ΄μ μνλ€.
Procedural Programming
)κ³Ό κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(Object Oriented Programming
)νλ‘κ·Έλλ°μμ 무μμ μ§ν₯νλ€λ κ²μ νΉμ λ°©μμ λν ν¨λ¬λ€μμ΄λΌκ³ ν΄μν μ μλ€. κ·Έλ¦¬κ³ μμΌλ‘ μ€λͺ ν λ κ°μ§ λ°©μμ΄ λ°λλλ λ°©μμ΄ μλμ μΈμ§ν΄μΌ νλ€.
μμμ μλ―Έν μ§ν₯μ μλ―Έλ‘ ν΄μνλ©΄, μ μ°¨μ νλ‘κ·Έλλ°(Procedural Programming
)μ μ μ°¨ μ§ν₯μ μΈ λ°©λ²(μμ°¨μ μΈ λͺ λ Ή μν)μΌλ‘ νλ‘κ·Έλλ°μ νλ€κ³ μκ°ν μ μμ§λ§, μ΄ λΆλΆμ λ²μμμ μ€λ₯λ‘ λ€λ€μ§λ€. μ μ°¨μ μ΄μ§ μμ νλ‘κ·Έλλ°μ μκ°ν μ μλ λΆλΆμμ μ΄λ₯Ό μ μ μλ€.
μ νν λ§νμλ©΄, μ μ°¨μ νλ‘κ·Έλλ°μμ μ μ°¨μ (procedural
)μ΄λΌλ λ»μ νλ‘μμ μ λν μ΄μΌκΈ°λ€. νλ‘μμ μ λν΄ κ°λ¨ν μ΄ν΄νλ©΄ νΉμ μ 무λ₯Ό μννκΈ° μν κ³Όμ λΌκ³ μκ°νλ©΄ νΈνλ€.
κ·Έλ° μλ―Έμμ μ μ°¨μ νλ‘κ·Έλλ°μ νΉμ μ 무 μνμ μν κ³Όμ μ λ°λΌ μ°¨λ‘λλ‘ μ½λλ₯Ό κΈ°μ νλ λ°©μμ΄λΌκ³ μ΄ν΄ν μ μλ€. κ·Έλ κΈ°μ Top-Down λ°©μμΌλ‘ μ€κ³λκ³ , μ»΄ν¨ν°μ μ²λ¦¬κ΅¬μ‘°μ μ μ¬νμ¬ λΉ λ₯Έ μ²λ¦¬ μλλ₯Ό κ°κ³ μλ€. λνμ μΈ μΈμ΄λ‘λ Cκ° μ΄μ ν΄λΉνλ€.
κ³Όκ±°μλ λΉκ΅μ ν° κ·λͺ¨μ νλμ¨μ΄μ μννΈμ¨μ΄κ° νμνμ§ μμ μ μ°¨μ μΈμ΄κ° λνμ μΈ μΈμ΄μμ§λ§, μ½λμ κ·λͺ¨κ° 컀μ§κ³ 볡μ‘ν΄μ Έ λμμ μ΄ν΄νκΈ°μ μ΄λ €μ΄ μνμ 'μ€νκ²ν° μ½λ'κ° λμ΄λ²λ¦¬λ λ¨μ μ΄ μ겨λ¬λ€. μ΄λ¬ν λ¬Έμ 극볡μ μν΄ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ΄ λ±μ₯ν κ²μ΄λ€.
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(Object Oriented Programming
)μ κ°μ²΄λ₯Ό μμ±νκ³ , ν΄λΉ κ°μ²΄ λ¨μμ μνΈ μμ©μ μμ νλ λ°©μμ μλ―Ένλ€. κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ μ²λ¦¬ μλκ° μλμ μΌλ‘ λ리μ§λ§, μΊ‘μν(Encapsulation
)μ μμ(inheritance
), λ€νμ±(polymorphism
)μ΄λΌλ ν€μλμ μ₯μ μ μ€λͺ ν μ μλ€.
μ°μ , μΊ‘μν(Encapsulation
)λ κ°μ²΄μ μμ±κ³Ό νμλ₯Ό νλλ‘ λ¬Άκ³ , μ€μ ꡬν λ΄μ©μ μλνλ€λ μλ―Έλ₯Ό κ°λλ€. μ¬κΈ°μ μλμ μ κ·Ό μ νμλ₯Ό ν΅ν΄ μ΄λ£¨μ΄μ§ μ μλ€. κ·Έλ¦¬κ³ μμ(inheritance
)μ μμ κ°μ²΄μ νμ κ°μ²΄μ κ΄κ³μμ νμ κ°μ²΄κ° μμ κ°μ²΄μ νλ λ° λ©μλλ₯Ό μ¬μ©ν μ μκ² λ¬Όλ €μ€λ€λ μλ―Έμ΄λ€. λ§μ§λ§μΌλ‘, λ€νμ±(polymorphism
)μ νλμ λ³μλͺ , ν¨μλͺ λ±μ΄ μν©μ λ°λΌ λ€λ₯Έ μλ―Έλ‘ ν΄μλ μ μλ€λ κ²μ΄λ€. μ΄λ μ€λ²λΌμ΄λ©(Overriding
)κ³Ό μ€λ²λ‘λ©(Overloading
)μ΄ κ°λ₯νλ€λ μλ―Έλ€.
μλ°μ€ν¬λ¦½νΈλ μ΄ μ€ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ ν΄λΉνλ€.π μΆμ²
μ μ°¨μ νλ‘κ·Έλλ° : λ§λ νμ λ Tistory : 1. μ μ°¨μ νλ‘κ·Έλλ° : Procedural Programming
μ μ°¨μ νλ‘κ·Έλλ° & κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° : Young Developer's Note : μ μ°¨μ νλ‘κ·Έλλ°κ³Ό κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°
μ μ°¨μ νλ‘κ·Έλλ° & κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° : μ½λ©κ³Ό νλ‘κ·Έλλ° κ·Έ μ¬μ΄ μ΄λκ°... : κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°(OOP) μ μ°¨μ νλ‘κ·Έλλ°(PP)
μ μ°¨μ νλ‘κ·Έλλ° & κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° : Stranger's Lab : κ°μ²΄μ§ν₯(OOP)κ³Ό μ μ°¨μ νλ‘κ·Έλλ°(PP)
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° : κΈ°λ³ΈκΈ°λ₯Ό μλ μ μλ§μΆμ΄ μ½λ©λΈλ‘κ·Έ : κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ΄ λκ°μ? (꼬리μ 꼬리λ₯Ό 무λ μ§λ¬Έ 1μμ, κ·Έλμ OOP)
νλ‘μμ (Procedure
) : μ μ‘μ΄μ μ½λ©μ΄μΌκΈ° : [ Oracle ] νλ‘μμ μ ν¨μμ μ°¨μ΄
Script Language
)μ€ν¬λ¦½νΈ μΈμ΄(
Script Language
)λ μμ© μννΈμ¨μ΄λ₯Ό μ μ΄νλ μ»΄ν¨ν° νλ‘κ·Έλλ° μΈμ΄λ₯Ό κ°λ₯΄ν¨λ€. μ΄λ μ΄λ―Έ μ‘΄μ¬νλ μννΈμ¨μ΄λ₯Ό μ μ΄νκΈ° μν μΈμ΄λΌλ λ»μ΄λ€.
μ€ν¬λ¦½νΈ μΈμ΄μ λν΄ μ°Ύλ€λ³΄λ©΄ μ°κ΄λ λ΄μ©μΌλ‘ μ»΄νμΌ μΈμ΄μ μΈν°νλ¦¬ν° μΈμ΄μ λν λ΄μ©μ λ§μ΄ μ°Ύκ² λλ€.
μ»΄νμΌ μΈμ΄μ μΈν°νλ¦¬ν° μΈμ΄λ₯Ό κ°λ¨νκ² μ€λͺ νμλ©΄, μ»΄νμΌλ¬λ μμ€μ½λλ₯Ό λͺ¨λ κΈ°κ³μ΄λ‘ λ³νν λ€ μ€ννλ μΈμ΄λ₯Ό μλ―Ένκ³ , μΈν°ν리ν°λ μμ€μ½λ ν μ€μ© ν΄μνμ¬ λ°λ‘ λͺ λ Ήμ΄λ₯Ό μ€ννλ μΈμ΄λ₯Ό μλ―Ένλ€.
μ μμ λ°λ₯΄λ©΄, μ€ν¬λ¦½νΈ μΈμ΄λ μΈν°νλ¦¬ν° μΈμ΄μ ν΄λΉνλ κ²μΌλ‘ μ΄ν΄λμ§λ§, λͺ¨λ μ€ν¬λ¦½νΈ μΈμ΄λ μΈν°νλ¦¬ν° μΈμ΄μ ν΄λΉνλμ§μ λν μ§λ¬Έμ 보면 μ»΄νμΌ λμ§λ§, μ€ν¬λ¦½νΈλ‘λ μ€ν κ°λ₯ν λΆλΆλ μλ€κ³ μκ°λλ€.π μΆμ²
μ€ν¬λ¦½νΈ μΈμ΄ : μν€λ°±κ³Ό
μ€ν¬λ¦½νΈ μΈμ΄ & μΈν°νλ¦¬ν° & μ»΄νμΌλ¬ : λ°μ½λ© : [μλ°μ€ν¬λ¦½νΈ] μ€ν¬λ¦½νΈμΈμ΄ / μΈν°ν리ν°μ μ»΄νμΌλ¬ μ°¨μ΄μ
μ€ν¬λ¦½νΈ μΈμ΄ & μ»΄νμΌ μΈμ΄ : damiano1027λ 벨λ‘κ·Έ : [CS] μ€ν¬λ¦½νΈ μΈμ΄ vs μ»΄νμΌ μΈμ΄
μλ°μ€ν¬λ¦½νΈκ° κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° μΈμ΄μ μνκΈ°μ κ°μ²΄μ λν μ΄ν΄λ μλ°μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νκΈ° μν΄ νμν κ³Όμ μΌλ‘ μκ°λλ€.
μ΄μ μλ°μ€ν¬λ¦½νΈ κΈ°μ΄μ λν ν¬μ€ν
μμ κΈ°λ³Έ νμ
μ μ μΈν λλ¨Έμ§ λ°μ΄ν°κ° λͺ¨λ κ°μ²΄μ ν΄λΉνλ€.
Property
)κ°μ²΄λ νλ‘νΌν°μ μ§ν©μ΄λ€.
νλ‘νΌν°(Property
)λ κ°μ²΄λ₯Ό μ΄λ£¨λ λ¨μμ΄λ€. νλ‘νΌν°λ ν€(key
)μ κ°(value
)λ‘ κ΅¬μ±λμ΄ μκ³ , νλ‘νΌν° ν€λ₯Ό ν΅ν΄ κ° νλ‘νΌν°λ₯Ό μλ³ν μ μλ€.
μ λ΄μ©λ€μ μμλ₯Ό ν΅ν΄ μμ보μ.
let obj = {
firstName : 'Acid',
lastName : 'Park',
age : 24
}
μ μμλ κ°μ²΄λ₯Ό μμ±νλ κ°μ²΄ 리ν°λ΄ λ¬Έλ²μ΄λ€. μμ κ°μ΄ μ€κ΄νΈ({}
)λ₯Ό μ΄κ³ μμ ν€μ κ°μ μ½λ‘ (:
)μ κΈ°μ€μΌλ‘ ꡬλΆνμ¬ μμ±νλ©°, νλ‘νΌν° κ°μ ꡬλΆμ μ½€λ§(,
)λ₯Ό ν΅ν΄ ꡬλΆνλ€.
μ μμμμ ν€λ firstName
κ³Ό lastName
, age
κ° μ΄μ ν΄λΉνκ³ , κ°μ 'Acid'
, 'Park'
κ·Έλ¦¬κ³ 24
λ±μ΄ μ΄μ ν΄λΉνλ€.
νλ‘νΌν° κ°μλ λͺ¨λ μλ£νμ΄ λ€μ΄μ¬ μ μκ³ λ°°μ΄κ³Ό ν¨μλ κ°λ₯νλ°, κ°μ΄ ν¨μμΌ κ²½μ° μ΄λ₯Ό λ©μλ(Method
)λΌκ³ μ μνλ€.
Method
)μ ν¨μ(Function
)μ μ°¨μ΄ν¨μμ λ©μλμ κ΄κ³λ ν¨μκ° λ ν¬κ΄μ μΈ μλ―Έλ₯Ό κ°λλ€κ³ μ΄ν΄ν μ μλ€.
λμ μ°¨μ΄λ₯Ό κ°λ¨ν μ€λͺ νλ©΄, ν¨μμ κ²½μ°μλ λ 립μ μ΄κ³ , λ©μλμ κ²½μ° κ°μ²΄μ μ’ μμ μ΄λ€.
μ΄λ₯Ό κ°λ¨ν μμλ‘ μ΄ν΄ν΄λ³΄μ.
// ν¨μ function func() { console.log('Hello, World!') } // λ©μλ let obj = { method : function () { console.log('Hello, World!') } } func() // ν¨μ νΈμΆ obj.method() // λ©μλ νΈμΆ
μ λ κ°μ§ κ²½μ°λ κ°μ κ°μ μΆλ ₯νλ€. νμ§λ§, ν¨μλ λ 립μ μΌλ‘ μμ μ ν¨μλͺ (func()
)λ§μΌλ‘ μ€νμ΄ λμ§λ§, κ°μ²΄(obj
)μ μ’ μλ λ©μλ(method
)μ κ²½μ°obj
λ₯Ό ν΅ν΄ μ€νλλ€.
μ΄λ¬ν λΆλΆμ΄ λ©μλκ° κ°μ²΄μ μ’ μλλ€λ μ μ μλ―Ένλ€.π μΆμ²
κ°μ²΄λ₯Ό ꡬμ±νλ νλ‘νΌν°λ λ€μκ³Ό κ°μ λ°©λ²μΌλ‘ μ κ·Όν μ μλ€.
νλ‘νΌν°μ μ κ·Όνλ κ²μ μ νκΈ°λ²(Dot notation)κ³Ό κ΄νΈ νκΈ°λ²(Bracket notation)μ ν΅ν΄ κ°λ₯νλ€.
λ κ°μ§ λ°©μμ ν΅ν΄, λ€μκ³Ό κ°μ΄ νλ‘νΌν°μ μ κ·Όν μ μλ€.
let obj = {
firstName : 'Acid',
lastName : 'Park',
age : 24
}
console.log(obj.firstName) // μ νκΈ°λ²
console.log(obj['firstName']) // κ΄νΈ νκΈ°λ²
μ λ κ°μ§ λ°©μμ κ°μ κ²°κ³Όλ₯Ό μΆλ ₯νλ€. νμ§λ§ νλ‘νΌν° μλ³μμμ μ°¨μ΄λ₯Ό 보μΈλ€.
μ νκΈ°λ²μ κ²½μ° μνλ²³μΌλ‘ μμνλ©°, 곡백μ ν¬ν¨νμ§ λͺ»νκ³ , μ«μλ‘λ μμν μ μλ€. νμ§λ§ κ΄νΈ νκΈ°λ²μ κ²½μ° λ¬Έμμ΄ ννλ₯Ό κ°μ§λ©°, 곡백μ ν¬ν¨ν μ μκ³ , λ³μ λν λ¬Έμμ΄λ‘ ν΄μλλ€λ©΄ μ¬μ©ν μ μλ€.
μ νκΈ°λ²μ΄ λΉκ΅μ μ½κΈ° μ½κ³ , μμ±νκΈ° λ νΈνκΈ° λλ¬Έμ μμ£Ό μ¬μ©νμ§λ§, νΉμν κ²½μ°μλ κ΄νΈ νκΈ°λ²μ΄ λ μ©μ΄ν μ μλ€.
μλ₯Ό λ€μ΄, 쑰건μ λ°λΌ λ€λ₯Έ νλ‘νΌν°μ μ κ·Όν΄μΌ νλ κ²½μ°κ° μλ€.
let obj = {
name1 : 'David',
name2 : 'Robert'
}
function func(n) {
let result = n === 0 ? 'name1' : 'name2'
return result
}
console.log(obj[func(1)])
ν΄λΉ κ²½μ° 'Robert'
λΌλ κ°μ΄ μΆλ ₯λλ κ²μ νμΈν μ μλ€. μ΄λ κ² κ΄νΈ νκΈ°λ²μ μ¬μ©νλ©΄ ν¨μμ μΈμ κ°μ λ°λΌ μ λμ μΌλ‘ λ€λ₯Έ νλ‘νΌν°μ μ κ·Όν μ μλ€.
νλ‘νΌν°μ μ κ·Όνλ λ°©λ²μ μμ보μμΌλ, μ΄μ΄μ νλ‘νΌν° μΆκ°μ λ³κ²½ λ° μ κ±°μ λν΄ μμ보μ.
νλ‘νΌν°μ μΆκ°μ λ³κ²½μ μ λ κ°μ§ μ κ·Όλ²μ ν΅ν΄ κ°λ₯νλ€.
let obj = {
name1 : 'David',
name2 : 'Robert'
}
obj.name3 = 'Tom' // μ νκΈ°λ² μΆκ°
obj['name4'] = 'Duke' // κ΄νΈ νκΈ°λ² μΆκ°
console.log(obj.name3, obj.name4) // output : 'Tom' 'Duke'
obj.name3 = 'Kim' // μ νκΈ°λ² μμ
obj['name4'] = 'Park' // κ΄νΈ νκΈ°λ² μμ
console.log(obj.name3, obj.name4) // output : 'Kim' 'Park'
μμ κ°μ΄ μ νκΈ°λ²κ³Ό κ΄νΈ νκΈ°λ²μ νμ©νμ¬ νλ‘νΌν°μ μΆκ°μ λ³κ²½μ΄ κ°λ₯νλ€.
κ΄νΈ νκΈ°λ²μ κ²½μ°μλ λμ μΌλ‘ νλ‘νΌν°λ₯Ό μΆκ°ν μ μλ€.
const obj = {
};
['red', 'green', 'blue'].forEach((color) => {
obj[color] = color.substring(0, 1);
});
console.log(obj)
/* output : [object Object] {
blue: "b",
green: "g",
red: "r"
} */
ν΄λΉ μμμ κ²½μ° λ°°μ΄ λ΄ μμλ€μ forEach()
λ©μλλ₯Ό ν΅ν΄ μννλ©΄μ, λ°°μ΄ λ΄ μμλ€μ κ°κ° νλ‘νΌν° ν€λ‘ κ°μ Έμ€κ³ , substring()
λ©μλλ₯Ό νμ©νμ¬ μμμ μ κΈμλ§ μΆμΆνμ¬ νλ‘νΌν° κ°μΌλ‘ μ μ₯νλ μμμ΄λ€.
μμ κ°μ΄ νλΌλ―Έν° κ°μ νμ©νμ¬ λμ μΌλ‘ νλ‘νΌν°λ₯Ό μΆκ°ν μ μλ€.
νλ‘νΌν°μ μμ λ λ°°μ΄ μμμ μμ μ κ°μ΄ delete
μ°μ°μλ₯Ό μ¬μ©νμ¬ κ°λ₯νλ€.
let obj = {
name1 : 'David',
name2 : 'Robert'
}
delete obj.name1
console.log(obj) // output : [object Object] { name2: "Robert" }
μ μμμ κ°μ΄ delete
μ°μ°μλ₯Ό ν΅ν΄ νλ‘νΌν°μ μμ λ₯Ό μ§νν μ μλ€.
for...in
λ¬Έμμ λ°λ³΅λ¬Έμ λν ν¬μ€ν
μμλ λ€λ£¬ λ΄μ©μ΄μ§λ§ κ°μ²΄μ λν΄ μμμΌλ, λ€μ ν λ² μ§κ³ λμ΄κ°μ.
for...in
λ¬Έμ κ°μ²΄ λ΄λΆμμ νλ‘νΌν° ν€λ₯Ό λμμΌλ‘ μννλ€.
let obj = {
a: 1,
b: 2,
c: 3
};
for (let i in obj) { // i = key κ°
console.log(i + ': ' +obj[i]);
};
// output : a: 1, b: 2, c: 3
ν΄λΉ μμμμ i
λ κ°μ²΄ obj
λ΄λΆμ νλ‘νΌν° ν€μΈ a
, b
, c
μ ν΄λΉνλ€. μ΄μ²λΌ νλ‘νΌν° ν€λ‘ μ κ·Όν μ μμ§λ§, κ°(value
)μ μ§μ μ μΌλ‘ μ κ·Όν μ μλ€. κ·Έλμ μμμ κ°μ΄ obj[i]
μ κ°μ νμμΌλ‘ κ°μλ μ κ·Όν μ μλ€.
Method
)κ°μ²΄μ μ μ₯λ κ°μ΄, μ¦ νλ‘νΌν° κ°μ΄ ν¨μμΌ λ, μ΄λ₯Ό λ©μλ(method
)λΌκ³ νλ€. console.log()
μ κ²½μ°μλ λ©μλμ ννλ₯Ό κ°κ³ μλλ°, μ¬κΈ°μ console
μ΄λΌλ κ°μ²΄μ λ©μλμΈ log()
μ νλ‘νΌν° κ°μ΄ ν¨μλΌλ κ²μ μ μ μλ€.
let obj = {
sayHello : () => {
console.log('Hello')
}
}
obj.sayHello() // output : 'Hello'
μ μμλ console
μ Hello
λΌλ κ°μ μΆλ ₯νλ obj
μ λ©μλλ₯Ό μμ±ν κ²μ΄λ€. ν΄λΉ λ©μλμ κ²½μ° κ°μ²΄ obj
μλ§ μ¬μ©μ΄ κ°λ₯νλ€.
λν, λ©μλλ₯Ό νμ©νλ©΄μ κ°μ²΄ λ΄λΆμ νλ‘νΌν° κ°μ νμ©ν μ μλλ°, μ΄μ κ΄λ ¨λμ΄ this
μ λν κ°λ
μ΄ μλ€.
this
λ©μλλ₯Ό ν΅ν΄ κ°μ²΄ λ΄λΆ μ 보μ μ κ·Όν μ μμ λ, λ©μλλ μ μν μ ν μ μλ€. μ΄μ κ΄λ ¨λμ΄ this
λΌλ ν€μλκ° μλ€. this
λ ν΄λΉ κ°μ²΄λ₯Ό κ°λ¦¬ν€λ©°, μ΄λ ν΄λΉ κ°μ²΄λ λ©μλλ₯Ό νΈμΆν λ μ¬μ©λ κ°μ²΄λ₯Ό μλ―Ένλ€.
λ€μμ μμλ₯Ό 보면μ μμ보μ.
let user = { name: "John" };
let admin = { name: "Admin" };
function sayHi() {
alert( this.name );
}
// λ³κ°μ κ°μ²΄μμ λμΌν ν¨μλ₯Ό μ¬μ©ν¨
user.f = sayHi;
admin.f = sayHi;
// 'this'λ 'μ (.) μμ' κ°μ²΄λ₯Ό μ°Έμ‘°νκΈ° λλ¬Έμ
// this κ°μ΄ λ¬λΌμ§
user.f(); // John (this == user)
admin.f(); // Admin (this == admin)
ν΄λΉ μμλ₯Ό 보면 λμΌν sayHi()
λΌλ ν¨μλ₯Ό κ°κ°μ κ°μ²΄ user
μ admin
μ λ©μλλ‘ μΆκ°ν λ€μ μ΄λ₯Ό μ€ννλ, κ²°κ³Ό κ°μ΄ John
κ³Ό Admin
μΌλ‘ λ€λ₯΄κ² λνλ¬λ€.
μ΄λ₯Ό ν΅ν΄, μλ°μ€ν¬λ¦½νΈμμ this
κ°μ λ°νμμ μν΄ κ²°μ λλ€λ κ²μ μ μ μλ€.
μλ°μ€ν¬λ¦½νΈμμ this
κ° μ΄λ»κ² μλνλμ§μ λν΄μ μ§λ ν¨μ ν¬μ€ν
μμ λ€λ€μΌλ, μΌλ° ν¨μμ νμ΄ν ν¨μμ this
μ°¨μ΄, scope
μ ꡬλΆμ λν΄ λμ΄κ° λ€μ μμ보μ! π
λ©μλ : νκΈ°μ κ°λ° Blog : μλ°μ€ν¬λ¦½νΈ - κ°μ²΄ λ©μλ μ 리
λ©μλμthis
: javascript.info : λ©μλμ this