Wecode TIL - Class, Object

Younggwang Kim·2020년 11월 22일
0

Wecode

목록 보기
5/28

Class

class를 예로 들면 붕어빵 틀이라고 할 수 있다. 하나의 틀을 만들어 놓으면, 그 틀을 이용해 붕어빵을 계속 찍어 낼 수 있다. 그렇게 만들어진 붕어빵을 인스턴스라고 한다.
자바스크립트의 class는 es6부터 추가되었다. 그 전에는 클래스를 정의하지 않고 object를 만들어 사용했다.

  • 클래스 선언 기본형
    class A {
    name;
    age;
    function()

}

여기서 name, age는 fields라고 하고, 클래스 안에서 사용되는 함수를 methods라고 한다.

class = template
declare once
no data in

  • Class declartions
    class Person {
    constructor(name,age) {
    // fields
    this.name = name;
    this.age = age;
    }
    // methods
    speak(){
    console.log(${this.name}: hello!)
    }
    }

const YG = new Person('Yg',28);
console.log(YG.speak())

}

Object

하나의 변수에는 하나의 값만 저장할 수 있다. 그래서 사용할 값이 많아지면 수 많은 변수를 사용하게 된다. 그렇게되면 유지보수도 힘들어진다. 그래서 쉽게 관리하기 위해 object를 사용한다.
object를 사용하면 관련된 변수들끼리 모아서 관리를 할 수 있다.
object는 key(value에 접근하기 위한 property 변수) 와 value의 집합체이다.

  1. object 생성
    const obj = {};
    const obj1 = new Object();

obj 를 leteral방식이라고하고, obj1을 constructor라고한다.

  1. object 추가하기
    const my = {
    name : younggwang,
    age : 28;
    }

my.hasJob = false;
my['hasJob'] = false

  1. object 삭제하기
    delete object명.key
    object명['key'];
  1. object 접근하기
    데이터에 접근할 때에는 dot(.)을 사용하거나 스트링타입을 사용해 접근할 수 있다.

function printValue(obj, key){
console.log(obj.key);
}

이러한 경우는 obj에 key라는 property를 호출하라는 것이다. 하지만 obj 내에 key라는 property값이 없으면 undifined를 받아오게된다. 이것을 방지하기 위해서는 obj.key가 아닌
obj[key]를 사용하여 접근해야한다.

  1. 함수를 통해 object생성하기
    const person1 ={name : 김씨, age : 15};
    const person2 ={name : 이씨, age : 15};
    const person3 ={name : 박씨, age : 15};
    const person4 ={name : 서씨, age : 15};

이런식으로 반복적인 object를 생성하기 위해서는 함수를 사용하는 것이 좋다.
function makePerson(name,age) {
return{
this.name = name;
this.age = age;
};
}
person5 = makePerson('양씨', 20);

  1. property의 존재여부 체크하기
    in operator라고 하는데 (key in obj) 이렇게 사용하면 obj에 key가 있는지 확인한다.

for(key in obj) {
console.log(key)
}

obj의 키값을 돌면서 키를 보여준다.

  1. cloning
    user1 = {name : YG, age:29};
    user2 = user1
    이것은 그냥 user2가 user1의 값을 복사했을뿐 같은 값을 가르키고 있다. 그래서 user2를 수정하여도 user1이 같이 수정된다.

그러면 어떻게 복사를 하느냐?? 2가지 방법이 있다.
1. const user3 = {};
for (key in user1) {
user3[key]=user1[key];
}

이렇게하면 user1의 키값을 돌면서 user3[user1의 key]에 user1의 value값을 호출에 저장한다.

  1. const user4 = {};
    Object.assign(user4, user1);

Object객체의 assign 메서드를 사용한다.
그럼 user4에 user1객체가 그대로 들어간다.

😭😭😭object는 보면 볼수록 더 헷갈려지는거 같다.. 😭😭😭

0개의 댓글