// Objects
// one of the JavaScript`s data types
// a collection of related data and/or functionality.
// Nearly all objects in JavaScirpt are instances of Object
// object = {key : value};의 복합체
//Object를 만드는방법 2가지
//1.Literals and properties
const obj1 = {}; //'object literal' syntax
const obj2 = new Object(); //'object constructor' syntax
//
function print(person){
console.log(person.name);
console.log(person.age);
}
//개선
// Object 생성
const ellie= { name : 'ellie', age : 4};
print(ellie);
//with JavaScript magic (dynamically typed language)
//can add properties later
ellie.hasJob = true;
console.log(ellie.hasJob);
// can delete properties later
delete ellie.hasJob;
console.log(ellie.hasJob);
//2. Computed Properties (계산된 properties)
// key should be always String
console.log(ellie.name);
console.log(ellie['name']);
ellie['hasJob'] = true;
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('aiden', 29);
console.log(person4);
//4. Constructor Function
function Person(name, age) {
//this= {};
this.name = name;
this.age = age;
//return this;
}
//5. in operator : property existence check(key in obj)
// 해당하는 obj안에 key가 있는지 없는지 확인
console.log('name' in ellie);
console.log('age' in ellie);
console.log('random' in ellie);
console.log(ellie.random);
//6. for.. in vs for..of
//for(key in obj)
console.clear();
for( key in ellie) {
console.log(key);
}
//for (value of iterable)
const array = [1,2,4,5];
for(let i = 0; i <array.length; i++){
console.log(array[i]);
}
for(value of array) {
console.log(value);
}
// 7 Fun cloning
// Object.assign(dest, [obj1, obj2, obj3...])
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);
//new way
const user4 = {};
Object.assign(user4, user);
console.log(user4);
const user5 = Object.assign({}, user);
console.log(user5);
// another exmaple
const fruit1 = {color : 'red'};
const fruit2 = {color : 'blue', size : 'big'};
// fruit1보다 fruit2가 뒤에있어서 fruit2에 값이 fruit1에 덮어씌운다. 즉 뒤에있는 인자가 앞에있는 인자의 값을 덮어씌움
const mixed = Object.assign({}, fruit1, fruit2);
console.log(mixed.color);
console.log(mixed.size);
JavaScript
복사