Front-End/JavaScript

객체 λ¦¬ν„°λŸ΄

πŸŒ³μ§€ν˜œμ˜ 숲 2023. 2. 3. 17:49

- μ‹λ³„μž 넀이밍 κ·œμΉ™μ„ λ”°λ₯΄μ§€ μ•ŠλŠ” μ΄λ¦„μ—λŠ” λ°˜λ“œμ‹œ λ”°μ˜΄ν‘œλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

var person = {
    firstName: 'Ung-mo', // μ‹λ³„μž 넀이밍 κ·œμΉ™μ„ μ€€μˆ˜ν•˜λŠ” ν”„λ‘œνΌν‹° ν‚€
    'last-name': 'Lee' // μ‹λ³„μž 넀이밍 κ·œμΉ™μ„ μ€€μˆ˜ν•˜μ§€ μ•ŠλŠ” ν”„λ‘œνΌν‹° ν‚€
}

console.log(person) // { firstName: 'Ung-mo', last-name: 'Lee' }
var person = {
    firstName: 'Ung-mo',
    last-name: 'Lee' // SyntaxError: Unexpected token -
}

 

 

 

- λ¬Έμžμ—΄ λ˜λŠ” λ¬Έμžμ—΄λ‘œ 평가할 수 μžˆλŠ” ν‘œν˜„μ‹μ„ μ‚¬μš©ν•΄ ν”„λ‘œνΌν‹° ν‚€λ₯Ό λ™μ μœΌλ‘œ 생성할 μˆ˜λ„ μžˆλŠ” κ²½μš°μ—λŠ” ν”„λ‘œνΌν‹° ν‚€λ‘œ μ‚¬μš©ν•  ν‘œν˜„μ‹μ„ λŒ€κ΄„ν˜Έ([...])둜 λ¬Άμ–΄μ•Ό ν•œλ‹€.

- But. ν‚€λ‘œμ„œμ˜ 의미λ₯Ό κ°–μ§€ λͺ»ν•˜λ―€λ‘œ ꢌμž₯ν•˜μ§€ μ•ŠμŒ.

var obj = {};
var key = 'hello';

// ES5: ν”„λ‘œνΌν‹° ν‚€ 동적 생성
obj[key] = 'world';
// ES6: κ³„μ‚°λœ ν”„λ‘œνΌν‹° 이름
// var obj = {[key]: 'world'};

console.log(obj); // {hello: "world"}




- λ©”μ„œλ“œ: ν”„λ‘œνΌν‹° 값이 ν•¨μˆ˜μΌ 경우 일반 ν•¨μˆ˜μ™€ κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ λ² μ„œλ“œλΌ λΆ€λ₯Έλ‹€.

- 객체에 λ¬Άμ—¬μžˆλŠ” ν•¨μˆ˜λ₯Ό 의미

var circle = {
    radius: 5; // ν”„λ‘œνΌν‹°

    // μ›μ˜ 지름
    getDiameter: function() { // λ©”μ„œλ“œ
        return 2 * this.radius; // thisλŠ” circle을 가리킨닀.
    }
};

console.log(circle.getDiameter()); // 10

 

 

 

- ν”„λ‘œνΌν‹° μ ‘κ·Ό

var person = {
    name: 'Lee'
};

// λ§ˆμΉ¨ν‘œ ν‘œκΈ°λ²•μ— μ˜ν•œ ν”„λ‘œνΌν‹° μ ‘κ·Ό
console.log(person.name); // Lee

// λŒ€κ΄„ν˜Έ ν‘œκΈ°λ²•μ— μ˜ν•œ ν”„λ‘œνΌν‹° μ ‘κ·Ό
// λŒ€κ΄„ν˜Έ ν”„λ‘œνΌν‹° μ ‘κ·Ό μ—°μ‚°μž 내뢀에 μ§€μ •ν•˜λŠ” ν”„λ‘œνΌν‹° ν‚€λŠ” λ°˜λ“œμ‹œ λ– μ˜΄ν‘œλ‘œ 감싼 λ¬Έμžμ—΄μ΄μ–΄μ•Ό ν•œλ‹€.
// λ”°μ˜΄ν‘œλ‘œ 감싸지 μ•Šμ€ 이름을 ν”„λ‘œνΌν‹° ν‚€λ‘œ μ‚¬μš©ν•˜λ©΄ μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 μ‹λ³„μžλ‘œ ν•΄μ„ν•œλ‹€.
console.log(person['name']); // Lee

 

 

 

- ν”„λ‘œνΌν‹°ν‚€κ°€ μ‹λ³„μž 넀이밍 κ·œμΉ™μ„ μ€€μˆ˜ν•˜μ§€ μ•ŠλŠ” 이름, 즉 μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μ‚¬μš© κ°€λŠ₯ν•œ 이름이 μ•„λ‹ˆλ©΄ λ°˜λ“œμ‹œ λŒ€κ΄„ν˜Έ ν‘œκΈ°λ²•μ„ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

var person = {
    'last-name': 'Lee',
    1: 10
};

person.'last-name'; // SyntaxError: Unexpected string
person.last-name; // λΈŒλΌμš°μ € ν™˜κ²½: Nan
                  // Node.jsν™˜κ²½: ReferenceError: name is not defined
person[last-name]; // ReferenceError: last is not defined
person['last-name']; // Lee

// ν”„λ‘œνΌν‹° ν‚€κ°€ 숫자둜 이뀄진 λ¬Έμžμ—΄μΈ 경우 λ”°μ˜΄ν¬λ₯Ό μƒλž΅ν•  수 μžˆλ‹€.
person.1; // SyntaxError: Unexpected number
person.'1'; // SyntaxError: Unexpected string
person[1]; // 10 : person[1] -> person['1']
person['1'] // 10

 

 

 

- ν”„λ‘œνΌν‹° 동적 생성 & μ‚­μ œ

// ν”„λ‘œνΌν‹° 동적 생성
var person = {
    name: 'Lee'
};

// personκ°μ²΄μ—λŠ” age ν”„λ‘œνΌν‹°κ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€.
// λ”°λΌμ„œ person 객체에 age ν”„λ‘œνΌν‹°κ°€ λ™μ μœΌλ‘œ μƒμ„±λ˜κ³  값이 ν• λ‹Ήλœλ‹€.
person.age = 20;

console.log(person); // {name: "Lee", 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}

 

 

 

- λ©”μ„œλ“œ μΆ•μ•½ ν‘œν˜„

// 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










참고자료: http://www.yes24.com/Product/Goods/92742567