primitive type 변수는 단 하나의 정보만을 다룰 수 있음.
인자가 많아 질 때에 많은 것을 관리해야 함. (변수 추가, Function 추가)
const obj1 = {} // object literal syntax
const obj2 = new object() // object constructor syntax
object 는 key, value 쌍으로 이루어진 집합체.
computed properties > ellie['name'] = string 값으로 properties에 접근 할 수 있음.
runtime에서 결정될 때 사용하면 매우 편하다.
example) function printValue(obj, key) { console.log(obj[key]) } 통해서 동적 접근 가능.
Property value shorthand > 순수하게 object 를 생성하는 함수들은 보통 대문자로 선언한다.
해당 기능이 있기에 key 와 value의 이름이 동일하다면 생략 가능하다.
example) function makePerson(name, age) { return {name : name, age : age} )
기존 1 > function makePerson(name, age) { return {name, age} ) key와 value 이름이 같기에 생략 함.
기존 2 > function Person(name, age) { this.name = name; this.age = age ) > constructor function으로 부르기 위해 대문자 선언.
in operator > property existence check ( Key in object )
example) console.log('name' in ellie)
for..in vs for..of >
example)
for (Key in ellie) { console.log(key) } block을 돌 때 마다 obj에 접근.
모든 obj를 탐색하고 싶을 때 사용.
for(let I = 0; I < array.length; i++) { console.log(array[i]) } -> for(value of array) { console.log(value) }
배열과 같은 배열 List를 접근하기 위해 사용.
cloning >
example)
old ways - for (key in user) {user3[key] = user[key] } 로 복사하였음. 새로운 메모리를 선언하고 데이터를 복사한 경우
new ways - Object.assing(user4, user) Object 함수를 이용하여 코드 작성에 용이해짐.
다중 할당 가능 = Object.assign의 return 값은 object 이므로 const mixed = Object.assing({}, fruit1. fruit2) 형식으로 사용 가능.