{property(= key): vaule, prop: val....}
값으로 배열, 객체가 올 수 있음.
배열 - 순서를 가진다.
객체 - 의미를 가진다.
공통점: 참조형 데이터, 대량의 데이터를 다루는 데 쓰임.
let person = {
name: 'james',
age: 18,
occupation: 'student'
}
person 객체의 name 속성값을 조회한다면,
dot notation : person.name
bracket notation : person['name']
그런데 만약 속성값이 변수라면?
function check(obj, key) {
return obj[key];
}
check(person, age); // 18
key는 변수이기 때문에 obj[key]로 작성해야 함.
obj.key나 obj['key']는 obj에 'key'라는 속성을 조회하는 거임.
+응용+

let person = {
name: 'james',
age: 18,
occupation: 'student'
}
추가
: person['gender'] = 'male';
*점 표기법은 person.gender = 'male';
삭제
: delete person.gender;
변경
: person.age = 20;
for (let key in obj) { }+객체 특화 메소드
Object.keys(obj)는 속성들을 배열로 리턴
[키, 키, 키, 키]
Object.valuse(obj)는 값들 배열로 리턴
[값, 값, 값, 값]
Object.entries(obj)는 속성, 값 둘 다 배열로 리턴 [[키, 값], [키, 값], [키, 값]}

in 연산자
key in obj
: 명시된 속성이 명시된 객체에 존재하면 true를 반환.
: if(obj[key] !== undefined)와 같음.
삼항연산자 condition ? exprIfTrue : exprIfFalse
condition (조건문)exprIfTrue (참일 때 실행할 식)exprIfFalse (거짓일 때 실행할 식)
Q. mostFrequentCharacter
:문자열에서 가장 반복이 많이 되는 문자를 리턴하는데, 만약 최대 반복 횟수가 같은 문자가 여러 개라면, 먼저 최대반복횟수에 도달하는 문자를 리턴하기.(공백은 포함X)
function mostFrequentCharacter(str) {
let obj = {mostFreqCount: 0, mostFreqChar: ''};
for (let el of str) {
if (el === ' ') {
continue;
}
if (!(el in obj)) {
obj[el] = 0;
}
obj[el]++;
if (obj[el] > obj.mostFreqCount) {
obj.mostFreqCount = obj[el];
obj.mostFreqChar = el;
}
}
return obj.mostFreqChar;
}