드림코딩강의와 모던자바스크립트 딥다이브 내용을 정리하였습니다.
{key:value}
key (문자, 숫자, 문자열, 심볼)
value (원시값, 객체(함수))
let apple = {
name: 'apple', //key:value로 이루어져있다
'hello-bye': '안녕',
0: 1,
['hello-bye1']: '안녕',
}
console.log(apple.name); //마침표 표기법
console.log(apple['name']); //대괄호 표기법
console.log(apple['hello-bye1']); //대괄호 표기법 (-들어있는 것은 .으로 접근이 안되고 []를 써서 접근이가능하다)
존재하지 않는 프로퍼티에 값을 할당하면 프로퍼티가 동적으로 생성되어 추가되고 프로퍼티 값이 할당된다.
var person = {
name: 'Jo'
};
person.age = 20; //이렇게 추가할수가 있다
console.log(person); //{name: 'Jo', age: 20}
속성 삭제하는 법
var person = {
name: 'Jo'
age: 20;
};
delete person.age;
console.log(person); //{name: 'Jo'}
const obj = {
name: 'lion',
age: 20,
};
//코딩하는 시점에, 정적으로 접근이 확정됨
obj.name; //lion (value 값을 얻을 수 있다)
obj.age; //20
//동적으로 속성에 접근하고 싶을때 대괄호 표기법 사용!
function getValue(obj, key) {
return obj[key];
}
console.log(getValue(obj, name)); //lion
//동적으로 추가하기
function addKey(obj, key, value) {
obj[key] = value;
}
addKey(obj, 'job', 'engineer');
console.log(obj); // { name: 'lion', age: 20, job: 'engineer' }
//동적으로 삭제하기
function deleteKey(obj, key) {
delete object[key];
}
const x = 0;
const y = 0;
const coordinate = { x, y }; //{ x:x, y:y };
console.log(coordinate);
function makeObj(name, age) {
return {
name,
age,
};
}
객체에도 함수를 넣을 수 있다.
객체는 연관된 정보와 함수들을 묶어서 관리할 수 있다.
const apple = {
name: 'apple',
display: function() {
console.log(`${this.name}: 사과`) //객체안에서 자기자신 데이터에 접근할때는 thus를 사용
},
};
apple.display(); // apple: 사과
const apple = {
name: 'apple',
display: function () {
console.log(`${this.name}: 사과`);
},
};
const orange = {
name: 'orange',
display: function () {
console.log(`${this.name}: 오렌지`);
},
};
console.log(apple);
console.log(orange);
{name: 'apple', display: ƒ}
display: ƒ ()
name: "apple"
[[Prototype]]: Object
{name: 'orange', display: ƒ}
display: ƒ ()
name: "orange"
[[Prototype]]: Object
생성자 함수를 이용해서 좀 더 간략하고 실용적인 코드를 만들수 있다.
function Fruit(name, koreaName) {
this.name = name;
this.koreaName = koreaName;
this.display = () => {
console.log(`${this.name}: ${this.emoji}`);
};
// return this; //생략가능
};
const apple = new Fruit('apple', '사과');
const orange = new Fruit('orange', '오렌지');
console.log(apple); //Fruit {name: 'apple', koreaName: '사과', display: ƒ}
console.log(orange); //Fruit {name: 'orange', koreaName: '오렌지', display: ƒ}