* 07μ₯ μ°μ°μ, 08μ₯ 쑰건문, 09μ₯ μΌλΆ λΆλΆμ ν¨μ€ν©λλ€. *
9.1 νμ λ³νμ΄λ?
κ°λ°μκ° μλμ μΌλ‘ κ°μ νμ μ λ³ννλ κ²μ λͺ μμ νμ λ³ν λλ νμ μΊμ€ν μ΄λΌ ν©λλ€. κ°λ°μμ μλμ μκ΄μμ΄ JSμμ§μ μν΄ μ묡μ μΌλ‘ νμ μ΄ λ³νλκΈ°λ ν©λλ€. μ΄λ₯Ό μ묡μ νμ λ³ν λλ νμ κ°μ λ³νμ΄λΌ ν©λλ€.
9.2 μ묡μ νμ λ³ν
JSμμ§μ ννμμ νκ°ν λ μ½λμ λ¬Έλ§₯μ κ³ λ €ν΄ μ묡μ μΌλ‘ λ°μ΄ν° νμ μ κ°μ λ³ν ν λκ° μμ΅λλ€.
'10' + 2 // '102'
7 * '10' // 70
9.4 λ¨μΆ νκ°
9.4.4 μ΅μ λ 체μ΄λ μ°μ°μ
ES11μ λμ λ μ΅μ λ 체μ΄λ μ°μ°μ ?. λ μ’νμ νΌμ°μ°μκ° null λλ undefinedμΈ κ²½μ° undefinedλ₯Ό λ°ννκ³ , μλλΌλ©΄ μ°νμ νλ‘νΌν°λ₯Ό μ°Έμ‘°ν©λλ€.
val elem = null;
var value = elem?.value;
console.log(value)
10.1 κ°μ²΄λ?
JSλ κ°μ²΄ κΈ°λ°μ νλ‘κ·Έλλ° μΈμ΄μ΄λ©°, JSλ₯Ό ꡬμ±νλ κ±°μ λͺ¨λ κ²μ κ°μ²΄μ λλ€. κ°μ²΄ νμ μ λ€μν νμ μ κ°μ νλμ λ¨μλ‘ κ΅¬μ±ν 볡ν©μ μΈ μλ£κ΅¬μ‘°μ λλ€.
κ°μ²΄λ 0κ° μ΄μμ νλ‘νΌν°λ‘ ꡬμ±λ μ§ν©μ΄λ©°, νλ‘νΌν°λ Keyμ Valueλ‘ κ΅¬μ±λ©λλ€. νλ‘νΌν° κ°μ΄ ν¨μμΌ κ²½μ°μλ μΌλ° ν¨μμ ꡬλΆνκΈ° μν΄ λ©μλλΌκ³ λΆλ¦ λλ€.
10.2 κ°μ²΄ 리ν°λ΄μ μν κ°μ²΄ μμ±
C++λ μλ° κ°μ ν΄λμ€ κΈ°λ° κ°μ²΄μ§ν₯ μΈμ΄λ ν΄λμ€λ₯Ό μ¬μ μ μ μνκ³ νμν μμ μ new μ°μ°μμ ν¨κ» μμ±μλ₯Ό νΈμΆνμ¬ μΈμ€ν΄μ€λ₯Ό μμ±νλ λ°©μμΌλ‘ κ°μ²΄λ₯Ό μμ±ν©λλ€.
JSλ μ΄μ λ¬λ¦¬ λ€μν κ°μ²΄ μμ± λ°©λ²μ μ§μν©λλ€.
- κ°μ²΄ 리ν°λ΄
- Object μμ±μ ν¨μ
- μμ±μ ν¨μ
- Object.create λ©μλ
- ν΄λμ€ (ES6)
κ°μ₯ μΌλ°μ μ΄κ³ κ°λ¨ν λ°©λ²μ κ°μ²΄ 리ν°λ΄μ μ΄μ©ν λ°©λ²μ λλ€. μ€κ΄νΈ ({...}) λ΄μ 0κ° μ΄μμ νλ‘νΌν°λ₯Ό μ μν©λλ€.
10.3 νλ‘νΌν°
κ°μ²΄λ νλ‘νΌν°μ μ§ν©μ΄λ©°, νλ‘νΌν°λ ν€μ κ°μΌλ‘ ꡬμ±λ©λλ€.
10.4 λ©μλ
λ©μλλ κ°μ²΄μ λ¬Άμ¬ μλ ν¨μλ₯Ό μλ―Έν©λλ€.
var circle = {
radius: 5, // νλ‘νΌν°
getDiameter: function() { // λ©μλ
return 2 * this.radius // thisλ circleμ κ°λ¦¬ν¨λ€.
}
}
10.5 νλ‘νΌν° μ κ·Ό
νλ‘νΌν°μ μ κ·Όνλ λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
- λ§μΉ¨ν νλ‘νΌν° μ κ·Ό μ°μ°μ(.)λ₯Ό νμ©νλ λ§μΉ¨ν νκΈ°λ²
- λκ΄νΈ νλ‘νΌν° μ κ·Ό μ°μ°μ([...])λ₯Ό μ¬μ©νλ λκ΄νΈ νκΈ°λ²
10.6 νλ‘νΌν° κ° κ°±μ
μ΄λ―Έ μ‘΄μ¬νλ νλ‘νΌν°μ κ°μ ν λΉνλ©΄ νλ‘νΌν° κ°μ΄ κ°±μ λ©λλ€.
var person = {
name: 'Lee'
}
preson.name = 'Kim';
console.log(person) // {name: "Kim")
10.7 νλ‘νΌν° λμ μμ±
var person = {
name: 'Lee'
}
preson.age = 23;
console.log(person) // {name: "Lee", age: 23)
10.8 νλ‘νΌν° μμ
delete μ°μ°μλ₯Ό νμ©νλ©΄ λ©λλ€.
var person = {
name: 'Lee'
}
preson.age = 23;
delete person.age;
delete person.address; // μ‘΄μ¬νμ§ μλ νλ‘νΌν°λ‘ μμ κ° λΆκ°λ₯νλ―λ‘ μλ¬ λ°μ X
console.log(person) // {name: "Lee")
10.9 ES6 μΆκ°λ κ°μ²΄ 리ν°λ΄ νμ₯ κΈ°λ₯
10.9.1 νλ‘νΌν° μΆμ½ νν
ES6μμλ νλ‘νΌν° κ°μΌλ‘ λ³μλ₯Ό μ¬μ©νλ κ²½μ° λ³μ μ΄λ¦κ³Ό νλ‘νΌν° ν€κ° λμΌν μ΄λ¦μΌ λ μλ΅ν μ μμ΅λλ€. νλ‘νΌν° ν€λ λ³μ μ΄λ¦μΌλ‘ μλ μμ±λ©λλ€.
let x = 1, y = 2;
const obj = { x, y };
console.log(obj); // { x: 1, y: 2}
10.9.2 κ³μ°λ νλ‘νΌν° μ΄λ¦
const prefix = "prop";
let i = 0;
const obj = {
[`${prefix}=${++i}`]: i,
[`${prefix}=${++i}`]: i,
[`${prefix}=${++i}`]: i,
};
console.log(obj())
10.9.3 λ©μλ μΆμ½νν
const obj = {
name: 'Lee',
sayHi() {
console.log('Hi!' + this.name);
}
}
obj.sayHi();
Reference: λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive