
📍 개요
◾ 자바스크립트의 `this`, 반복문, 배열 메서드, JSON 메서드를 이해하고 활용하는 방법에 대해 학습하였습니다.
1️⃣ this 키워드 이해하기
📁 일반 함수 호출
function showThis() {
console.log(this);
}
showThis(); // 'this'는 브라우저 환경에서 window 객체를 가리킵니다.
👉🏻 함수가 전역 컨텍스트에서 호출될 때 this는 전역 객체를 참조합니다.
📁 화살표 함수 호출
const obj = {
f: function () {
const ff = () => {
console.log(this);
};
ff();
const fff = function () {
console.log(this);
};
fff();
},
};
obj.f();
// f (화살표 함수 ff에서의 this)
// Window 객체 (일반 함수 fff에서의 this)
👉🏻 화살표 함수에서 this는 함수가 정의된 위치의 컨텍스트를 유지합니다.
📁 객체의 메서드 호출
const obj = {
f: function () {
console.log(this);
},
};
obj.f();
👉🏻 this는 obj 객체를 참조하며 메서드를 호출한 자기 자신의 객체를 참조합니다.
📁 생성자 함수 호출
function Person(name) {
this.name = name;
console.log(this);
}
const person1 = new Person('licat'); // Person { name: "licat" }
👉🏻 new 키워드를 사용해서 생성자 함수를 호출하면 this는 새로 생성된 객체를 나타냅니다.
📁 이벤트 핸들러 호출
<button id="myButton">Click me</button>
<script>
document.getElementById('myButton').addEventListener('click', function() {
console.log(this); // 'this'는 클릭된 버튼 요소를 참조합니다.
});
</script>
👉🏻 이벤트를 발생시킨 요소를 참조하는데 예를 들어, HTML 버튼 클릭 이벤트에서 this는 클릭된 버튼 요소를 가리킵니다.
이벤트 핸들러는 `addEventListener` 메서드를 사용하여 특정 요소에 할당됩니다.
2️⃣ (for ...in), (for ...of) 의 차이
◾ `for ...in` : 객체의 키(key) 순회
const obj = { a: 1, b: 2, c: 3 };
for (let key in obj) {
console.log(key); // 'a', 'b', 'c'
}
◾ `for ...of` : 객체의 값(value) 순회
const arr = [1, 2, 3];
for (let value of arr) {
console.log(value); // 1, 2, 3
}
for-of는 iterable 객체에서만 사용할 수 있습니다.
따라서 객체(object)는 iterable이 아니기 때문에 for-of로 순회할 수 없습니다.
❗객체는 iterable이 아니기 때문에 for of가 불가하며 object는 for-in만 가능합니다.
3️⃣ 배열 메서드(filter, reduce)
◾ `filter`
배열 안에 들어간 함수가 조건에 맞는 요소들만 모아서 새로운 배열 생성합니다.
const arr = [1, 2, 3, 4, 5];
const evenNumbers = arr.filter(x => x % 2 === 0); // [2, 4]
◾ `reduce`
배열의 각 요소를 누적하여 단일 값으로 반환합니다.
let arr2 = [1, 2, 3, 4, 5];
arr2.reduce((a, c) => a + c, 0); // a는 누적값(accumulator), c는 현재(current value)
// 0이 없으면 비어있는 배열일때 에러가 납니다.
/* reduce 활용 예제 */
let arr2 = [1, 2, 3, 4, 5];
const sum = arr2.reduce((accumulator, currentValue) => accumulator + currentValue, 0); // 15
0은 초기값으로, 만약 0이 없다면 첫 번째 요소가 초기값으로 사용됩니다.
❗빈 배열에서는 reduce가 오류를 발생시킬 수 있습니다.
4️⃣ JSON 의 개념과 메서드
데이터를 저장하고 전송하는 데 사용되는 가벼운 텍스트 기반의 데이터 교환 형식
✔️ 이름, 값 (`:` 콜론 표기)
✔️ 데이터 객체(`,` 쉼표 표기)
✔️ 배열(`[]` 대괄호 표기)
◾ `parse()` : JSON 문자열을 JavaScript 객체로 변환
const jsonString = '{"result":true,"count":42}';
const obj = JSON.parse(jsonString) // { result: true, count: 42 }
❗ JSON 문자열은 큰따옴표로 감싸야 하며, 키와 문자열 값은 항상 큰따옴표로 작성해야 합니다.
◾ `stringify()` : JavaScript 객체나 배열을 문자열로 변환
const obj = { result: true, count: 42 };
const jsonString = JSON.stringify(obj);
console.log(jsonString); // '{"result":true,"count":42}'
5️⃣ Document 개념과 활용
const logo = document.getElementById('logo');
const sectionTitle = document.querySelector('#section-title');
const sectionTitleAll = document.querySelectorAll('#section-title');
const hello = document.querySelector('.hello');
도큐먼트는 HTML 문서 전체를 의미합니다.
`document` 객체의 속성과 메서드는 문서의 구조와 내용에 접근하거나 조작할 수 있게 해줍니다.
📁 자주 쓰는 document 메서드
`document.getElementById()` : 주어진 ID를 가진 HTML 요소를 반환합니다.
`document.querySelector()` : 주어진 CSS 선택자와 일치하는 첫 번째 HTML 요소를 반환
`document.querySelectorAll()` : 주어진 CSS 선택자와 일치하는 모든 HTML 요소를 반환합니다.

📝 8일차 부트캠프 회고
1️⃣ 잘했던 점
오늘 수업은 아웃사이더 외톨이 노래 같았다..😖
분명 아침 9시에 수업을 했는데 정신을 차리고보면
오후 6시가 되는 마법이 일어난다💦
다행인 것은 정말 유익한 내용이 많다는 것이다.
강의시간에 어떤 수업인지 이해가 잘 안 가도
일단 듣고 메모하다보면 개인 자습시간에
진행했던 코드 실습 위주로 공부하면
다음 시간에 뭔가 약간 괜찮아진 느낌이든다.
이것이 복습의 힘..?!🫢
2️⃣ 부족했던 점
마지막 자바스크립트 시간이 끝났는데
다음 주부터는 FE프로젝트를 진행한다.
미리 어떻게 구조를 짜면 좋을지 생각해봐야겠다.
분명 이것저것 개발이랑 회고록 쓰다보면
시간이 부족할거라 예상해본다🥲
3️⃣ 향후 개선 방향
이번 주말에 자바 스크립트 공부에 집중해야겠다.
내 생각으로는 HTML이랑 CSS는
얼추 실력이 많이 나아진 것 같고
자바스크립트가 문제다!😵💫
'🖥️ JavaScript' 카테고리의 다른 글
💬 끄적이는 5일차 랜딩페이지 프로젝트 회고 (0) | 2024.08.23 |
---|---|
[🥸JavaScript]📝카카오 지도 API 사용법과 키 숨기기(gitignore )➰랜딩 페이지 (1) | 2024.08.22 |
[🥸JavaScript]📝랜딩페이지 만들기➰카카오맵 API, 이메일 유효성 검사, 사이드 메뉴 (0) | 2024.08.21 |
[🥸JavaScript]📝콜백함수, 배열함수, 메서드 정리➰(foreach, map) (2) | 2024.08.13 |
[🥸JavaScript]📝자바스크립트 변수 선언, 타입, 연산자➰(let, const) (0) | 2024.08.12 |