혼공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;)