언어/WEB

모던 자바스크립 10장 객체 리터럴

앨리스.W 2023. 5. 27. 07:15

9장  객체리터럴

객체란?

자바스크립트를 구성하는 거의 모든 것

객체는 변경 가능한 값

객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티 키와 값으로 구성된다

var person = {
    name : 'Lee',  //키 name , 값 'Lee'
    age: 20
}

프로퍼티와 메서드의 역할

프로퍼티 : 객체의 상태를 나타내는 값

메서드 : 프로퍼티를 참조하고 조작할 수 있는 동작

 

객체 리터럴에 의한 객체 생성

다양한 객체 생성 방법을 지원

-객체 리터럴

-Object 생성자 함수

-생성자 함수

-Object.create 메서드

-클래스(ES6)

var person = {
    name : 'Lee'
    sayHello: function() {
        console.log(`My name is ${this.name});
    }
};

프로퍼티

프로퍼티 키 : 문자열을 포함하는 모든 문자열 또는 심벌 값

프로퍼티 값 : 자바스크립트에서 사용할 수 있는 모든 값

식별자 네이밍 규칙을 따르지 않는 이름에는 반드시 따옴표를 사용해야 한다(숫자 등등)

그러나 가급적 ' ' 를 사용해서 생성

var person = {
    firstName =  'Ung-mo'
    'last-name':'Lee' //'-'이 존재하므로 ' ' 꼭붙여줘야한다
};

console.log(person)

//문자열 또는 문자열로 평가할 수 있는 표현식을 사용해 프로퍼티 키를 동적으로 생성
var obj ={};
var key = 'hello';

obj[key] = 'world';

console.log(obj)

//빈 문자열도 프로퍼티를 생성할 수 있다
var foo = {
    '':''
}

//숫자를 쓰면 암묵적 타입 변환
var foo = {
    0:1,
    1:2
}

//프로퍼티 키를 중복 선언하면 나중에 선언한 프로퍼티가 나온다

메서드

함수와 메서드는 다름

메서드는 객체에 묶여 있는 함수를 의미

var person = {
    name : 'Lee'
    sayHello: function() {  //메서드
        console.log(`My name is ${this.name});
    }
};

프로퍼티 접근

- 마침표 프로퍼티 접근 연산자(.)를 사용하여 마침표 표기법

- 대괄호 프로퍼티 접근 연산자 [ ...]를 사용하는 대괄호 표기법

대괄호 프로퍼티 접근 연산자 내부에 지정하는 프로퍼티 키는 반드시 따옴표로

감싼 문자열이여야 한다

프로퍼티 키가 숫자로 이뤄진 문자열인 경우 따옴표를 생략할 수 있다.

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

//Error
person[last-name];
person.last-name;

//숫자
person[1];
person['1'];

  프로퍼티 값 갱신, 동적 생성, 프로퍼티 삭제

//값 할당
var person = {
    name : 'Lee'
};

person.name ='Kim'

//동적 생성
person.age = 20;

//삭제
delte person.age

ES6에서 추가된 객체 리터럴의 확장 기능

1)프로퍼티 축약 표현

var x = 1, y = 2;

var obj = {
    x : x,
    y: y
};
//--------------------
let x = 1, y = 2;

const obj = {x, y};

2)계산된 프로퍼티 이름

var abc = 'abc';
var i = 0;

var obj = {};

obj[abc + '-' + ++i] = i

//---------------------------------
var abc = 'abc';
var i = 0;

const obj = {
    [`${abc}-${++i}`] : i
};

2)메서드 축약 표현

const obj = {
    name: 'w'
    say : function() {
        console.log(this.name);
    }
};
//아래로 축약
const obj = {
    name: 'w'
    say() {
        console.log(this.name);
    }
};
반응형