μλ°μ€ν¬λ¦½νΈλ κ°μ²΄(object) κΈ°λ°μ νλ‘κ·Έλλ° μΈμ΄μ΄λ©°, μλ°μ€ν¬λ¦½νΈλ₯Ό ꡬμ±νλ κ±°μ λͺ¨λ κ²μ΄ κ°μ²΄λ€. μμ νμ μ λ¨ νλμ κ°λ§ λνλ΄μ§λ§, κ°μ²΄ νμ μ λ€μν νμ μ κ°μ νλμ λ¨μλ‘ κ΅¬μ±ν 볡ν©μ μΈ μλ£κ΅¬μ‘°μ΄λ€. λν μμ νμ μ κ°, μ¦ μμ κ°μ λ³κ²½ λΆκ°λ₯ν κ°μ΄μ§λ§ κ°μ²΄ νμ μ κ°, μ¦ κ°μ²΄λ λ³κ²½ κ°λ₯ν κ°μ΄λ€.
κ°μ²΄λ 0κ° μ΄μμ νλ‘νΌν°λ‘ ꡬμ±λ μ§ν©μ΄λ©°, νλ‘νΌν°λ ν€(key)μ κ°(value)μΌλ‘ ꡬμ±λλ€.μλ°μ€ν¬λ¦½νΈμμ μ¬μ©ν μ μλ λͺ¨λ κ°μ νλ‘νΌν° κ°μ΄ λ μ μλ€. μλ°μ€ν¬λ¦½νΈμ ν¨μλ μΌκΈ κ°μ²΄ μ΄λ―λ‘ κ°μ΄ λ μ μμΌλ©° μΌκΈκ°μ²΄μΈ ν¨μλν νλ‘νΌν° κ°μΌλ‘ μ¬μ©ν μ μλ€.
νλ‘νΌν° κ°μ΄ ν¨μμΌ κ²½μ°, μΌλ° ν¨μμ ꡬλΆνκΈ° μν΄ λ©μλ(method)λΌ λΆλ₯Έλ€.
π§ κ°μ²΄μ ν¨μ?
ν¨μλ‘ κ°μ²΄λ₯Ό μμ±νκΈ°λ νλ©°, ν¨μ μμ²΄κ° κ°μ²΄μ΄κΈ°λ νλ€. μλ°μ€ν¬λ¦½νΈμμ κ°μ²΄λ λΆλ¦¬ν΄μ μκ°ν μ μλ κ°λ μ΄λ€. μ¦ κ°μ²΄λ₯Ό μ΄ν΄ν΄μΌ ν¨μλ₯Ό μ λλ‘ μ΄ν΄ν μ μκ³ , λ°λλ‘ ν¨μλ₯Ό μ΄ν΄ν΄μΌ κ°μ²΄λ₯Ό μ νν μ΄ν΄ν μ μλ€.
C++μ΄λ μλ° κ°μ ν΄λμ€ κΈ°λ° κ°μ²΄μ§ν₯ μΈμ΄λ ν΄λμ€λ₯Ό μ¬μ μ μ μνκ³ νμν μμ μ new μ°μ°μμ ν¨κ» μμ±μλ₯Ό νΈμΆνμ¬ μΈμ€ν΄μ€λ₯Ό μμ±νλ λ°©μμΌλ‘ κ°μ²΄λ₯Ό μμ±νλ€.
π§ μΈμ€ν΄μ€?
μΈμ€ν΄μ€λ ν΄λμ€μ μν΄ μμ±λμ΄ λ©λͺ¨λ¦¬μ μ μ₯λ μ€μ²΄λ₯Ό μλ―Ένλ€.
μλ°μ€ν¬λ¦½νΈλ νλ‘ν νμ κΈ°λ° κ°μ²΄μ§ν₯ μΈμ΄λ‘μ λ€μκ³Όκ°μ κ°μ²΄μμ± λ°©λ²μ μ§μνλ€.
κ°μ²΄ μμ± λ°©λ²μ€μμ κ°μ₯ κ°λ¨ν λ°©λ²μΈ κ°μ²΄ 리ν°λ΄μ μ€κ΄νΈ({...}) λ΄μ 0κ° μ΄μμ νλ‘νΌν°λ₯Ό μ μνλ€. λ³μμ ν λΉλλ μμ μ μλ°μ€ν¬λ¦½νΈ μμ§μ κ°μ²΄ 리ν°λ΄μ ν΄μν΄ κ°μ²΄λ₯Ό μμ±νλ€.
κ°μ²΄ 리ν°λ΄μ μ€κ΄νΈλ μ½λ λΈλ‘μ μλ―Ένμ§ μλλ€. λ°λΌμ μ½λλΈλ‘μ λ«λ μ€κ΄νΈ λ€μλ μΈλ―Έμ½λ‘ μ λΆμ΄μ§ μμ§λ§ κ°μ²΄ 리ν°λ΄μ λ«λ μ€κ΄νΈ λ€μλ μΈλ―Έμ½λ‘ μ λΆμΈλ€.
var person = {
name: 'Lee',
sayHello: function () {
console.log(`Hello! My name is ${this.name}.`);
}
};
console.log(typeof person); // object
console.log(person); // {name: "Lee", sayHello: Ζ}
κ°μ²΄λ νλ‘νΌν°μ μ§ν©μ΄λ©° νλ‘νΌν°λ ν€μ κ°μΌλ‘ ꡬμ±λλ€.
var person = {
// νλ‘νΌν° ν€λ name, νλ‘νΌν° κ°μ 'Lee'
name: 'Lee',
// νλ‘νΌν° ν€λ age, νλ‘νΌν° κ°μ 20
age: 20
};
νλ‘νΌν°λ₯Ό λμ΄ν λλ μΌν(,)λ‘ κ΅¬λΆνλ€. νλ‘νΌν° ν€μ νλ‘νΌν° κ°μΌλ‘ μ¬μ©ν μ μλ κ°μ λ€μκ³Ό κ°λ€.
ν¨μλ κ°μΌλ‘ μ·¨κΈν μ μκΈ° λλ¬Έμ νλ‘νΌν° κ°μΌλ‘ μ¬μ©ν μ μλ€. νλ‘νΌν° κ°μ΄ ν¨μμΌ κ²½μ° μΌλ° ν¨μμ ꡬλΆνκΈ° μν΄ λ©μλλΌ λΆλ₯Έλ€.
var circle = {
radius: 5, // β νλ‘νΌν°
// μμ μ§λ¦
getDiameter: function () { // β λ©μλ
return 2 * this.radius; // thisλ circleμ κ°λ¦¬ν¨λ€.
}
};
console.log(circle.getDiameter()); // 10
κ°μ²΄μ μ‘΄μ¬νμ§ μλ νλ‘νΌν°μ μ κ·Όνλ©΄ undefinedλ₯Ό λ°ννλ€.
var person = {
name: 'Lee'
};
// λ§μΉ¨ν νκΈ°λ²μ μν νλ‘νΌν° μ κ·Ό
console.log(person.name); // Lee
// λκ΄νΈ νκΈ°λ²μ μν νλ‘νΌν° μ κ·Ό
console.log(person['name']); // Lee
// undefined λ°ν
console.log(person.age)
μ΄λ―Έ μ‘΄μ¬νλ νλ‘νΌν°μ κ°μ ν λΉνλ©΄ νλ‘νΌν° κ°μ΄ κ°±μ λλ€.
var person = {
name: 'Lee'
};
// person κ°μ²΄μ name νλ‘νΌν°κ° μ‘΄μ¬νλ―λ‘ name νλ‘νΌν°μ κ°μ΄ κ°±μ λλ€.
person.name = 'Kim';
console.log(person); // {name: "Kim"}
var person = {
name: 'Lee'
};
// person κ°μ²΄μλ age νλ‘νΌν°κ° μ‘΄μ¬νμ§ μλλ€.
// λ°λΌμ person κ°μ²΄μ age νλ‘νΌν°κ° λμ μΌλ‘ μμ±λκ³ κ°μ΄ ν λΉλλ€.
person.age = 20;
console.log(person); // {name: "Lee", age: 20}
delete
μ°μ°μλ₯Ό μ¬μ©ν΄ κ°μ²΄μ νλ‘νΌν°λ₯Ό μμ νλ€.
var person = {
name: 'Lee'
};
// νλ‘νΌν° λμ μμ±
person.age = 20;
// person κ°μ²΄μ age νλ‘νΌν°κ° μ‘΄μ¬νλ€.
// λ°λΌμ delete μ°μ°μλ‘ age νλ‘νΌν°λ₯Ό μμ ν μ μλ€.
delete person.age;
// person κ°μ²΄μ address νλ‘νΌν°κ° μ‘΄μ¬νμ§ μλλ€.
// λ°λΌμ delete μ°μ°μλ‘ address νλ‘νΌν°λ₯Ό μμ ν μ μλ€. μ΄λ μλ¬κ° λ°μνμ§ μλλ€.
delete person.address;
console.log(person); // {name: "Lee"}
νλ‘νΌν° κ°μΌλ‘ λ³μλ₯Ό μ¬μ©νλ κ²½μ° λ³μ μ΄λ¦κ³Ό νλ‘νΌν° ν€κ° λμΌν μ΄λ¦μΌ λ νλ‘νΌν° ν€λ₯Ό μλ΅ν μ μλ€.
// ES5
var x = 1, y = 2;
var obj = {
x: x,
y: y
};
console.log(obj); // {x: 1, y: 2}
// ES6
let x = 1, y = 2;
// νλ‘νΌν° μΆμ½ νν
const obj = { x, y };
console.log(obj); // {x: 1, y: 2}
λ¬Έμμ΄ λλ λ¬Έμμ΄λ‘ νμ λ³νν μ μλ κ°μΌλ‘ νκ°λλ ννμμ μ¬μ©ν΄ νλ‘νΌν° ν€λ₯Ό λμ μΌλ‘ μμ±ν μλ μλ€. μ΄λ₯Ό κ³μ°λ νλ‘νΌν°λΌκ³ νλ€.
// ES5
var prefix = 'prop';
var i = 0;
var obj = {};
// κ³μ°λ νλ‘νΌν° μ΄λ¦μΌλ‘ νλ‘νΌν° ν€ λμ μμ±
obj[prefix + '-' + ++i] = i;
obj[prefix + '-' + ++i] = i;
obj[prefix + '-' + ++i] = i;
console.log(obj); // {prop-1: 1, prop-2: 2, prop-3: 3}
// ES6
const prefix = 'prop';
let i = 0;
// κ°μ²΄ 리ν°λ΄ λ΄λΆμμ κ³μ°λ νλ‘νΌν° μ΄λ¦μΌλ‘ νλ‘νΌν° ν€ λμ μμ±
const obj = {
[`${prefix}-${++i}`]: i,
[`${prefix}-${++i}`]: i,
[`${prefix}-${++i}`]: i
};
console.log(obj); // {prop-1: 1, prop-2: 2, prop-3: 3}
λ©μλλ₯Ό μ μν λ function ν€μλλ₯Ό μλ΅ν μΆμ½ ννμ μ¬μ©ν μ μλ€.
// ES5
var obj = {
name: 'Lee',
sayHi: function() {
console.log('Hi! ' + this.name);
}
};
obj.sayHi(); // Hi! Lee
// ES6
const obj = {
name: 'Lee',
// λ©μλ μΆμ½ νν
sayHi() {
console.log('Hi! ' + this.name);
}
};
obj.sayHi(); // Hi! Lee