๐จ JavaScript
[์ ๋ก์ด] Promise์ ๋๊ธฐ/๋น๋๊ธฐ ๊ด๋ จ ์งค๋ง ํค์๋์ ๋ฆฌ
https://sunshineyellow.tistory.com/64 ์๋ ๊ฐ์ด ๋ณผ๋งํ ๋๋ฆผ์ฝ๋ฉ ์ฝ๋ฐฑ์ง์ฅ ํ์ถ Promise ๊ธฐ์ด ๊ฒ์๊ธ. ์ ๋ก์ด ์ธ๊ฐJS์์ง ๋ณด๋ค๊ฐ ์ถ๊ฐ์ ์ธ ํค์๋ ๋ฌธ์ฅ ์ ๋ฆฌ๊ฐ ํ์ํด ์์ฑํ๋ค. Promise๋? ์คํ์ ๋๋๋ฐ!!! ๊ฒฐ๊ณผ๊ฐ์ ๋์ค์ ์ธ ์ ์๋ค. "์คํ์ ๋๋๋ฐ"๊ฐ ์ค์. ๊ทธ๋์ new Promise ์์ ์ต๋ช ํจ์๋ ๋๊ธฐ์ ์ผ๋ก ์คํ์ด ๋๋ค. ๋๊ธฐ๋น๋๊ธฐ ์คํ์์ ๊ด๋ จํด์ ์๋ ์ฝ๋๊ฐ ์ค์ํ๋ค. ๊ธฐ์ตํด ๋์. let a = 2; const p = new Promise((resolve, reject) => { console.log('์คํ1'); setTimeout(() => { a = 5; console.log('์คํ3', a); resolve(a); }, 0); }); // ..
JavaScript ์ ๋ฆฌ : this (2) ํ์ดํํจ์์์์ this
์ฌ๊ธฐ์ ์ ๊น๐ ํ์ดํ ํจ์์ ํน์ง ์์ฑ์๋ก ์ฌ์ฉํ ์ ์์ ์ค์ค๋ก์ this, argument๋ฅผ ๊ฐ์ง์ง ์์ returnํ์ง ์์๋ ๊ฐ์ด ๋ฐํ๋จ (๋ณธ๋ฌธ์ด ์ฌ๋ฌ ์ค๋ก ์ด๋ฃจ์ด์ง ๊ฒฝ์ฐ๋ ์ ์ธ) ํ์ดํ ํจ์์ this๋? this = ํจ์๊ฐ ์ ์๋ ์ค์ฝํ์ this๋ฅผ ๊ฐ๋ฆฌํด (์์ฑ๋ ๋ this๊ฐ ๊ฒฐ์ ๋๋ฉฐ, ํ์ดํํจ์๊ฐ ์ด๋ป๊ฒ ์ฌ์ฉ/ํธ์ถ๋๋ this๋ ๋ณํ์ง ์๋๋ค.) const obj = { name: '์ฒ ์', sayName: function() { const innerMethod = () => { return `${this.name}, ์๋ !`; }; console.log(innerMethod()); } }; obj.sayName(); // ์ฒ ์, ์๋ ! → ๊ทธ๋ฌ๋ฏ๋ก ๊ฐ์ฒด์ ๋ฉ์๋๋ ํ์ดํ ํจ์๋ก ์ ์ํ์ง..
JavaScript ์ ๋ฆฌ : this (1) ์ํฉ๋ณ this
JavaScript์์ this๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด๋ ์ ํด์ ธ ์์ง ์์ผ๋ฉฐ, ํธ์ถ๋ ๋ ๊ฒฐ์ ๋๋ค. ์๋์ฒ๋ผ ๋ค์ํ ์ํฉ์์ this๊ฐ ์ด๋ค ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๋์ง ์์๋ณด์. (ํ์ดํํจ์์์์ this๋ ๋ค์ ๊ธ์์ ์ ๋ฆฌํ๋ค.) ๋ชฉ์ฐจ ์ ์ญ ์ปจํ ์คํธ (Global scope) & ํจ์ ํธ์ถ ๊ฐ์ฒด์ ์ํ ๋ฉ์๋ ํธ์ถ ๊ฐ์ฒด์ ์ํ ๋ฉ์๋์ ๋ด๋ถ ํจ์ ํธ์ถ ํจ์๋ฅผ ๋ฉ์๋๋ก ํธ์ถ (call, apply, bind) ์์ฑ์ ํจ์ ํธ์ถ ํด๋์ค ์ด๋ฒคํธ ํธ๋ค๋ฌ "use strict" ๋ชจ๋ 1. ์ ์ญ ์ปจํ ์คํธ (Global scope) & ํจ์ ํธ์ถ this = ์ ์ญ ๊ฐ์ฒด (๋ธ๋ผ์ฐ์ ์์๋ window) console.log(this); // ์ ์ญ ๊ฐ์ฒด (๋ธ๋ผ์ฐ์ ์์๋ window) function myFunction() { co..
๋ฌธ์ ํด๊ฒฐ : hash๊ฐ ๋ฐ์์ scroll ์กฐ์ ํ๊ธฐ
์ํฉ A ํ์ด์ง์์ aํ๊ทธ ์ฌ๋ฌ๊ฐ์ ๋งํฌ๋ฅผ ๊ฑธ์ด์ ๋๋ฅด๋ฉด Bํ์ด์ง์ ๊ฐ๊ฐ ๋ค๋ฅธ ์์น๋ก ์ฐ๊ฒฐ๋๊ฒ ํ๋ ค๊ณ ํ๋ค. (์ฌ๊ธฐ์ Aํ์ด์ง์ Bํ์ด์ง๋ ๊ฐ๊ธฐ ๋ค๋ฅธ HTML์ด๋ค.) Aํ์ด์ง ์ ๋ชฉ1 ์ ๋ชฉ2 ์ ๋ชฉ3 ์ ๋ชฉ4 ... Bํ์ด์ง ์ปจํ ์ธ ์ ๋ชฉ 1 ์ปจํ ์ธ ... ์ปจํ ์ธ ์ ๋ชฉ 2 ์ปจํ ์ธ ... ์ปจํ ์ธ ์ ๋ชฉ 3 ์ปจํ ์ธ ... ์ปจํ ์ธ ์ ๋ชฉ 4 ์ปจํ ์ธ ... ์ปจํ ์ธ ์ ๋ชฉ 5 ์ปจํ ์ธ ... ... ๋ฌธ์ ํญ์ ์๋จ์ css๊ฐ fixed๋ก ๊ณ ์ ๋๋ header๊ฐ ์์ด์ ๋งํฌ๋ก ์ด๋ํ์ ์ ์ํ๋ ์ ํํ ์์น์ ์ฒ์๋ถํฐ ๋ณด์ด์ง ์๊ณ ์ค๊ฐ๋ถํฐ ๋ณด์ด๋ ํ์์ด ์์๋ค. ์กฐ๊ฑด Aํ์ด์ง์์ aํ๊ทธ๋ฅผ ๋๋ฅด๋ฉด Bํ์ด์ง์ ํด๋น ํด์์์ด๋๋ฅผ ๊ฐ์ง h4๊ฐ header ๋ฐ๋ก ์๋ ์ค๋๋ก ์คํฌ๋กค์ด ์ด๋๋์ด์ผ ํ๋ค. ํด๊ฒฐ Bํ์ด์ง์์ ์๋ ์ฝ๋๋ฅผ ์คํ์..
์๋ํ : ํ์ ๋์ด ๊ณ์ฐํด์ ์๋๋ก ์๊ธฐ
์ํฉ ๋งค๋ฒ ์๋ก์ด ํ์ ์ด ์ฌ๋ผ์ฌ ๋๋ง๋ค 1200px ์๋์ ํ์ top๊ฐ์ ๊ทธ ์ ํ์ ์ ๋์ด๊ฐ๋งํผ ์๋์ผ๋ก ์ ๋ฐ์ดํธํ๊ณ ์๋ ์ํฉ์ด์๋ค. ์์ ํํ์ ํ์ ์ด ์์ผ๋ฉฐ, ๊ฐ ํ์ ์ absolute๋ก ํ์๋๋ค. ํ์ ID ๋ฒํธ๋ ์ ์ฐํ๋ฉฐ, ID ๋ฒํธ๋ ํญ์ ๋ณ๊ฒฝ๋ ์ ์๋ค. (๊ด๋ฆฌ์์ฌ์ดํธ์์ ์ฌ์ฉ์์ธ ํด๋ผ์ด์ธํธ๊ฐ ๋ง๋๋ก ์จ๋ฃ๋๋ค) ๊ฐ ํ์ ์ด ๋ธ๋ผ์ฐ์ ๋๋น 1200px ์ดํ๋ก ๋จ์ด์ง๋ฉด ์ฒซ ๋ฒ์งธ ํ์ ์ด ์์์ ์๋๋ก ์์๋๋ก ๋ฐฐ์น๋๋ค. ํ๋จ ๋ฐฐ์น๋ css top:npx๋ก ์ ์ด๋๋ฉฐ, ์ฒซ ๋ฒ์งธ ํ์ ์ top:60px๋ก ์์ํ๊ณ ๋ ๋ฒ์งธ ํ์ ์ top:(์์ ์๋ ํ์ ์ ๋์ด ๊ฐ + 20px)๋ก ๊ณ์ฐ๋์ด์ผ ํ๋ค. 1์ฐจ ํด๊ฒฐ const popups = document.querySelectorAll('[id^="pop_..
Level 3 : 9 ์ฅ๋ฐ๊ตฌ๋๋ฒํผ ๊ตฌํํ๊ธฐ(localStorage, array, forEach, JSON)
9. ์ฅ๋ฐ๊ตฌ๋ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ ์กฐ๊ฑด ์ฅ๋ฐ๊ตฌ๋ ๋ฒํผ์ ๋๋ฅด๋ฉด localStorage์ ๋ฐฐ์ด ํํ๋ก ์ํ์ด๋ฆ์ด ๋ด๊ธฐ๊ณ , cart.html์ ๋ฐ๋ก ๋ง๋ค์ด ํด๋น html์ ์ํ์ด ๋ฟ๋ ค์ง๋๋ก ๋ง๋ค๊ธฐ ํ์ด ์ํ๋ฆฌ์คํธ // ์ฌ๋ฌ๊ฐ์ ์ฅ๋ฐ๊ตฌ๋ ๋ฒํผ๋ค์ buttonCarts ๋ณ์๋ก ์ ์ธ let buttonCarts = document.querySelectorAll('.btn-cart'); // buttonCarts ์์ ๊ฐ๊ฐ์ buttonCart elements๋ค์๊ฒ ํจ์๋ฅผ ์คํ buttonCarts.forEach(function(buttonCart){ // buttonCart๋ฅผ ํด๋ฆญํ๋ฉด.. buttonCart.addEventListener('click', function(){ // localStorage์ cart๋ฅผ ke..