[혼공단] 혼자 공부하는 자바스크립트, 5주차 미션

chm0202·2022년 8월 8일
0

혼공단

목록 보기
5/6
post-thumbnail

혼공JS 5주차 미션 : 객체, 속성, 메소드가 무엇인지 설명하기

방학이 너무 빨리 사라졌다.. ヾ(。ꏿ﹏ꏿ)ノ゙ 진짜 이번 여름은 완전 더워서 하루종일 집 밖을 나갈 생각조차 안하고 집에 짱박혀있었다. 날씨가 너무 말도 안된다. ((*゜Д゜)ゞ” 빨리 가을이 왔으면 조켓다,,

기본 미션

5주차 기본 미션은 객체, 속성, 메소드가 무엇인지 설명하기이다.

객체

객체는 자바스크립트의 데이터 타입 중 하나로, 다양한 데이터를 저장하고 처리하는 데 사용된다.

객체를 생성하는 방법에는 두 가지가 있는데,
첫 번째는 객체 생성자 문법이다. 객체 생성자 문법은 Object() 생성자를 사용하여 객체를 생성하는 방법이다.

let o = new Object();

두 번째는 객체 리터럴 문법이다. 중괄호({ }) 안에 키(key) : 값(value) 쌍으로 구성된 속성(property)를 여러 개 넣어 객체를 생성하는 방법이다. 키에는 문자형만 올 수 있으며 값에는 모든 자료형이 올 수 있다.

let o = {
  name : "Hongong",
  age : 18
};

속성

속성(= 프로퍼티)은 객체 내부에 있는 값으로, 점 표기법을 이용하여 접근할 수 있다.

console.log(o.name); // Hongong
console.log(o.age); // 18

자바스크립트는 객체에 속성을 동적으로 추가할 수 있다.

o.address = "Seoul"

또한, delete 연산자를 사용하여 삭제가 가능하다.

delete o.age;
console.log(o.age); // undefined

스페이스나 " - "이 들어가는 프로퍼티 이름은 따옴표로 감싸야 한다.

let o = {
  "s p a c e" : true 
}

메소드

객체의 속성 중에서도 함수를 메소드라 한다.

let user = {
  // 속성
  name : "John",
  age : 18
  // 메소드
  eat : function(){
    console.log("밥을 먹습니다.");
  }
};

자바스크립트는 함수와 메소드가 분리된 개념이 아니기 때문에 기존에 정의된 함수를 메소드로 등록할 수 있다.

let user = {
  name : "John",
  age : 18,
};

function eat(){
  console.log("밥을 먹습니다.");
};

user.eat = eat;
  

메소드에서 this 키워드를 사용하면 자기 자신이 가지고 있는 속성임을 표시할 수 있다.

let user = {
  // 속성
  name : "John",
  age : 18
  // 메소드
  eat : function(){
    // this는 현재 객체를 나타냄 -> user.name
    console.log(`${this.name}이 밥을 먹습니다.`);
  }
};

선택 미션

5주차 선택미션은 p. 288 확인 문제 3번 풀고, 풀이 과정 설명하기이다.
문제는 Math 객체를 활용하여 사인 90도의 값을 구하는 것이다.
모질라 문서를 참조하여 Math.sin() 함수로 사인 값을 구할 수 있다는 것을 알게 되었다.
그런데..

<script>
  // 변수를 선언합니다.
	const degree = 90  
  
  // 출력합니다.
  	console.log(Math.sin(degree)) // 0.8939966636005579
</script>

사인 90도는 1이여야 하는데 왠 0.89어쩌고 하는 이상한 값이 나왔다. 왜그런가 찾아보니.. Math.sin() 함수의 인자는 일반적으로 사용하는 각이 아닌 라디안 값이라고 한다. 여기서 라디안 값이랑 호의 길이가 반지름과 같을 때 중심각의 크기이다. 그래서 일반각으로 sin을 알고 싶으면 "일반각 * Math.PI / 180"을 함수의 인자로 줘야 한다고 한다.

배운대로 코드를 수정해보면

<script>
  // 변수를 선언합니다.
	const degree = 90  
  
  // 출력합니다.
  	console.log(Math.sin(degree * Math.PI / 180)) // 1
</script>

결과가 1로 나오게 된다!

마무리

5주차도 무사히 끝냈다. 오늘은 개념을 정리하는 미션이라 예전에 배웠던 것들을 복습한다는 생각으로 열심히 정리했다. 이제 슬슬 쫌.. 귀찮아지는데 마지막까지 할 수 있도록 마음을 다잡아야겠다. (o。o;)

profile
개발 블로그🌱

0개의 댓글