/*const name = 'ellie';const age = 4;print(name, age);function print(name, age) { console.log(name); console.log(age);}const ellie = { name: 'ellie', age: 4 }; 오브젝트로 관리*/constobj1= {}; // {} = 'object literal' syntaxconstobj2=newObject(); // new = 'object constructor' syntaxfunctionprint(person) {console.log(person.name);console.log(person.age);}constellie= { name:'ellie', age:4 };print(ellie);// with JavaScript magic (dynamically typed language)// can add properties laterellie.hasJob =true;console.log(ellie.hasJob);// can delete properties laterdeleteellie.hasJob;console.log(ellie.hasJob);
2. 계산된 프로퍼티 : Computed properties
// key should be always stringconsole.log(kelly.name); // 코딩할 때console.log(kelly["name"]); // 정확하게 어떤 키가 필요한지 모를 때kelly["hasJob"] =true;console.log(kelly.hasJob);functionprintValue(obj, key) {console.log(obj[key]);}printValue(kelly,"name");printValue(kelly,"age");
3. Property value shorthand : key와 value의 값이 같을 때 생략 가능한 기능
// for (key in obj)console.clear();for (key in ellie) {console.log(key);} // name, age, hasJob// for (value of iterable) - 순차적constarray= [1,2,4,5];for(value of array){console.log(value);} // 1 , 2 , 4 , 5
7. Fun cloning
// Object.assign(dest, [obj1, obj2, obj3, ...])constuser= {name:'ellie', age:20};constuser2= user;user2.name ='coder';console.log(user); // {name: 'coder', age: 20}// old way - 수동적constuser3= {};for (key in user){ user3[key] = user[key];}console.clear();console.log(user3); // {name: 'coder', age: 20}// Object.assign() - ctrl키 누르고 정의된 것 확인하기(어떤값이 리턴됐는지 등)// assign<T, U>(target: T, source: U): T & U;constuser4=Object.assign({}, user);console.log(user4); // {name: 'coder', age: 20}//another exampleconstfruit1= {color:'red'};constfruit2= {color:'blue', size:'big'};constmixed=Object.assign({}, fruit1, fruit2);//더 뒤에서 선언된 변수의 값이 앞에 지정된 곂치는 값들을 덮음console.log(mixed.color); //blueconsole.log(mixed.size); //big