자바스크립트는 객체 기반 프로그래밍 언어이며, 원시 값을 제외하고 자바스크립트를 구성하는 모든 것이 '객체'
객체: 0개 이상의 프로퍼티로 구성된 집합.
프로퍼티
따라서, 객체는 프로퍼티와 메서드로 구성된 집합체
객체는 프로퍼티와 메서드를 통해 상태와 동작을 하나의 단위로 구조화할 수 있어 유용하다
1) 객체의 상태를 나타내는 값인 프로퍼티
2) 이 프로퍼티를 참조하고 조작할 수 있는 메서드
- 객체 리터럴
- Object 생성자 함수
- 생성자 함수
- Object.create 메서드
- 클래스(ES6)
let person = {
name: 'kim',
sayHello: function() {
console.log(`안녕, 나는 ${this.name}`);
}
};
❗ 객체 리터릴의 중괄호는 코드 블럭을 의미하지 않는다
- 코드블럭의 닫는 중괄호 뒤에는 세미콜론 X, 객체 리터럴은 값이기 때문에 세미콜론 O
객체는 프로퍼티의 집합이며, 프로퍼티는 키와 값으로 구성된다
var foo = {
0: 1,
1: 2,
2: 3,
0: 4, // 0: 1 덮어씀
function: '' // 예약어를 프로퍼티 키로 사용해도 에러 발생 X, 그러나 권장하지 않음
};
var circle = {
radius: 5, // < 프로퍼티
//원의 지름
getDiameter: function() { //메서드
return 2 & this.radius; //this는 circle을 가리킨다.
}
};
console.log(circle.getDiameter()); // 10
var person = {
name: 'Lee'
}
person.name = 'Kim';
console.log(person) // {name: 'Kim'}
person.age = 20;
console.log(person) // {name: 'Kim', age: 20}
delete person.age
console.log(person) // {name: 'Kim'}
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}
let person = {
name: 'kim',
sayHello: function() {
console.log(`안녕, 나는 ${this.name}`);
}
};
let person = {
name: 'kim',
sayHello() {
console.log(`안녕, 나는 ${this.name}`);
}
};