//objects
//object는 key와 value 의 집합체이다
const obj1 = {};
const obj2 = new Object();
function print(person){
console.log(person.name);
console.log(person.age);
}
const ellie = {name:'ellie', age:4};
print(ellie);
//with JS magic (dynamically typed language)
//can add properties later
ellie.hasJob=true;
console.log(ellie.hasJob);
//2. computed properties
//property는 String type으로 지정해야한다
//왠만하면 .을쓰고 실시간으로 받아오고싶으면 computed properties를 쓰자
console.log(ellie.name);
console.log(ellie['name']);
ellie['hasJob'] = false;
console.log(ellie.hasJob);
function printValue(obj,key){
console.log(obj[key]);
}
printValue(ellie,'name');
printValue(ellie,'age');
//3. Property value shorthand
const person1 = {name:'bob', age:2};
const person2 = {name:'steve', age:3};
const person3 = {name:'dave', age:4};
const person4 = new Person('ellie',30);
console.log(person4);
//4. Constructor function
function Person(name,age){ //다른 계산을 하지않고 순수하게 Object만 생성하는 함수는 앞글자를 대문자로 쓴다
//this = {} 생략됨
this.name = name;
this.age = age;
//return this 생략됨
}
//in operator (해당 오브젝트 안에 key가 있는지 없는지 확인하는 것)
console.log('name' in ellie);
console.log('age' in ellie);
console.log('random' in ellie);
// 6. for..in vs for..of
// for (key in obj)
console.clear();
for(key in ellie){ // ellie object 안에 있는 key를 반복해서 key변수에 넣음
console.log(key);
}
//for (vlaue of iterable) <<배열같은애들에 사용
const array = [1,2,3,4];
for(value of array){ //배열 안에 있는 인자를 value에 담는것을 반복함
console.log(value);
}
// 7. fun cloning
// Object.assign
const user = {name : 'ellie', age:'20'};
const user2 = user;
user2.name='coder';
console.log(user);
//old way
const user3 = {};
for(key in user){
user3[key]=user[key];
}
console.clear();
console.log(user3);
const user4 = {};
Object.assign(user4, user); //Object.assign(복사받을애,복사될애);
console.log(user4);
// another example
const fruit1 = {color:'red'};
const fruit2 = {color : 'blue', size:'big'};
const mixed = Object.assign({},fruit1,fruit2); //만약 동일한 key가 있을경우 나중에 나온걸로 덮어쓰기한다.
console.log(mixed.color);
console.log(mixed.size);