모던 자바 스크립트 Deep Dive
를 공부하며 정리하는 글을 또 정리하며 이해하는 글입니다.
var person = {
name : 'Lee', // 프로퍼티
age : 20 // 프로퍼티 ( 프로퍼티 키 : 프로퍼티 값)
}
var counter = {
num : 0, // 프로퍼티
increase : function () { // 메서드
this.num++;
}
}
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 : f}
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
var person = {
name : 'Lee'
};
// 마침표 표기법에 의한 프로퍼티 접근
console.log(person.name); // 'Lee'
// 대괄호 표기법에 의한 프로퍼티 접근
console.log(person['name']); // 'Lee'
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}
var person = {
name : 'Lee'
};
// 프로퍼티 동적 생성
person.age = 20;
// person 객체에 age 프로퍼티가 존재한다.
// 따라서 delete 연산자로 age 프로퍼티를 삭제할 수 있다.
delete person.age;
// person 객체에 address 프로퍼티가 존재하지 않는다.
// 따라서 delete 연산자로 address 프로퍼티를 삭제할 수 없다. 이때 에러가 발생하지 않는다.
delete person.address;
console.log(person);
// ES5
var x = 1, y = 2;
var obj = {
x : x,
y : y
};
console.log(obj); // {x : 1, y : 2}
// ES6
var x = 1, y = 2;
var 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
var prefix = 'prop';
var i = 0;
var obj = {
[`${prefix}-${++i}`] : i,
[`${prefix}-${++i}`] : i,
[`${prefix}-${++i}`] : i,
};
// 계산된 프로퍼티 이름으로 프로퍼티 키 동적 생성
obj[prefix + '-' + ++i] = i;
obj[prefix + '-' + ++i] = i;
obj[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
var obj = {
name : 'Lee',
// 메서드 축약 표현
sayHi() {
console.log('Hi' + this.name);
}
};
obj.sayHi(); // Hi! Lee