[JS 객체(Object)

2020. 6. 18. 20:39프론트엔드/JAVASCRIPT

728x90

object = {key : value};

 

1. Literals and properties

 

1-1. Object의 사용

보통 primitive타입은 변수 하나당 값을 하나만 할당할 수 있는데,

이 변수들을 출력하고자 함수를 정의해서 호출한다면

출력하고자 하는 변수들이 굉장히 많아질 수 있고 비효율적일 수 있는데

이럴 경우 객체(Object)를 활용하면 위의 문제점들을 개선할 수 있음

const name = "ellie";
const age = 4;
print(name, age);
function print(name, age) {
  console.log(name);
  console.log(age);
}

function printObject(person) {
  console.log(person.name);
  console.log(person.age);
}

const ellie = { name: "ellie", age: 4 };
printObject(ellie);

 

1-2. Object 생성방법

//Object를 만드는밥
const obj1 = {}; // way1. 'object literal' syntax
const obj2 = new Object(); // way2. 'object contructor' syntax

 

 

2.Computed properties(계산된 프로퍼티)

'.'(dot)으로 사용하는 경우는 코딩하는 순간 key에 해당하는 값을 받아오고 싶을 사용

'[]'(computed properties) 사용하는 경우는 우리가 정확하게 어떤 키가 필요한지 모를

, 런타임에서 결정될 사용하게

console.log(ellie.name);
console.log(ellie["name"]);
ellie["hasjob"] = true;
console.log(ellie.hasjob);

 

3.. Property value shorthand

const person1 = { name: "bob", age: 2 };
const person2 = { name: "steve", age: 3 };
const person3 = { name: "dave", age: 4 };
const person4 = makePerson("ellie", 30);
console.log(person4);
function makePerson(name, age) {
  return {
    //자바스크립트에서는 'roperty value shorthand'라는 기능이 있어서
    //key와 value의 이름이 동일하다면, 이것을 생략이 가능
    name, //name: name,
    age //age: age
  };
}

 

 

4. Constructor Function

//보통 Object생성할 때만 사용하는 함수는 아래와 같이 사용
const person5 = new Person("ellie", 30);
console.log(person5);
function Person(name, age) {
  //this = {}; //이게 생략되었다고 보면됨
  this.name = name;
  this.age = age;
  //return this; //이게 생략되었다고 보면됨
}

 

 

5. in operator : property existence check (key가 있는지 없는지 확인하는 키워드

console.log("name" in ellie); //true
console.log("age" in ellie); //true
console.log("hasJob" in ellie); //true
console.log("height" in ellie); //false
console.log(ellie.random); //undefined

 

 

6. for ..in vs for ..of

console.clear(); //이전 로그들 삭제
for (key in ellie) {
  console.log(key);
}
//for (value of iterable)
const array = [1, 2, 3, 4, 5];
for (let i = 0; i < array.length; i++) {
  console.log(array[i]);
}
for (value of array) {
  console.log(value);
}

 

 

7. cloning

const user = { name: "ellie", age: "20" };
const user2 = user;
for (i in user2) {
  console.log(i);
}
user2.name = "coder";
console.log(user.name);

//Object 복사방법
//way1(old)
const user3 = {};
for (key in user) {
  user3[key] = user[key];
}
console.clear();
console.log(user3);

//way2
const user4 = {};
Object.assign(user4, user);
//const user4 = Object.assign({}, user);
console.log(user4);

//another example
//fruit1과 fruit2에 color라는 같은 key가 있으면 뒤에 있는 인자가 앞의 인자를 뒤집어 씀
const fruit1 = { color: "red" };
const fruit2 = { color: "blue", size: "big" };
const mixed = Object.assign({}, fruit1, fruit2);
console.log(mixed.color);
console.log(mixed.size);

 

 

 

 

참고 : 드림코딩 by 엘리 유튜브

728x90

'프론트엔드 > JAVASCRIPT' 카테고리의 다른 글

[JS] excel 다운로드  (0) 2020.11.08
[JS] 헤더 고정 스크롤 구현  (0) 2020.11.07
[JS] javascript:void(0) 과 #  (0) 2020.06.08
[JS] 클래스(Class)  (0) 2020.06.04
[JS] 함수(Functions)  (0) 2020.06.03