๋ถ์คํธ์บ ํ 6๊ธฐ ์น ํ์คํ ์ฑ๋ฆฐ์ง (2021.07.19 - 2021.08.13)
๋ถ์คํธ์บ ํ 6๊ธฐ ์น ํ์คํ ๋ฉค๋ฒ์ญ (2021.08.23 ~ )
javascript-mission's Introduction
javascript-mission's People
javascript-mission's Issues
[Mission1] ์ถ๊ฐ ๊ตฌํ์ฌํญ - setState ๊ตฌํ
TodoList
ํจ์์ setState(nextData)
๋ผ๋ ํจ์๋ฅผ ๋ง๋ญ๋๋ค.
- ์ด ํจ์๋ ํด๋น ์ปดํฌ๋ํธ ์ด๊ธฐ ์์ฑ ์ ๋๊ฒผ๋ data ํ๋ผ๋ฉํฐ๋ฅผ nextData๋ก ๋์ฒดํ๊ณ
- ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ๋ ๋๋งํฉ๋๋ค.
ํด๋น ํจ์๋ฅผ ์ถ๊ฐํ ๋ค, new TodoList(...)
ํ๋ ์ฝ๋ ์ดํ์ ํด๋น ์ปดํฌ๋ํธ์ ์ธ์คํด์ค์ todoList.setState(์๋ก์ด ๋ฐฐ์ด)
ํํ๋ก ๋ฐ์ดํฐ๋ง ๋ค์ ๋ฃ์์ ๋ ์ปดํฌ๋ํธ๊ฐ ๋ค์ ๋ ๋๋ง ๋๋๋ก ์์ฑํด์ฃผ์ธ์.
- setState ํจ์ ํธ์ถ ํ ๋ค์
todoList.render()
๋ฅผ ํธ์ถํ๋ ๊ฒ์ด ์๋๋ผ,setState
ํจ์ ๋ด์์ ํ๋ฉด์ ๋ค์ ๋ ๋๋งํ๋ ๊ฒ๊น์ง ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
[Mission1] ์ถ๊ฐ ๊ตฌํ์ฌํญ - isCompleted ๊ตฌํ
- data์ ๊ฐ object์
text
์ธ์isCompleted
๋ผ๋ ํ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค. - ํด๋น ๊ฐ์ true, ํน์ false ๊ฐ์ ์ง์ ํด์ฃผ์ธ์.
var data = [
{
text: '์ฝ๋ฉํ๊ธฐ',
isCompleted: true
},
{
text: '์ง์ ์ฒญ์ํ๊ธฐ',
isCompleted: false
}
]
TodoList
์ปดํฌ๋ํธ ๋ด์ text ๋ ๋๋ง ์, isCompleted ๊ฐ์ด true์ธ ๊ฒฝ์ฐ<s>
ํ๊ทธ๋ฅผ ์ด์ฉํด ์ญ์ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋ ๊ฑธ ์ถ๊ฐํฉ๋๋ค.
[Mission1]
<html>
<head>
<title>Mission 1</title>
<meta charset="utf-8" />
</head>
<body>
<div id="todo-list"></div>
<script>
var data = [
{
text: 'JS ๊ณต๋ถํ๊ธฐ'
},
{
text: 'JS ๋ณต์ตํ๊ธฐ'
}
]
// ์ด๊ณณ์์ ์ฝ๋ฉ์ ์์ํ์ธ์!
</script>
</body>
</html>
script
ํ๊ทธ ๋ด์ ์๋์ ์๊ตฌ์ฌํญ์ ๋ง์กฑํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
TodoList๋ผ๋ ์ด๋ฆ์ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํฉ๋๋ค.
ํ์ ๊ตฌํ์ฌํญ ์ค๋ช
- function style์ ๋ฌธ๋ฒ, class style์ ๋ฌธ๋ฒ ์ด๋ ๊ฒ์ ์ฌ์ฉํด๋ ์ข์ต๋๋ค.
- new ํค์๋๋ฅผ ํตํด ์์ฑํด์ ์ฌ์ฉ๋ฉ๋๋ค.
- ํ๋ผ๋ฉํฐ๋ก ์๋์ ๊ฐ์ ํํ์ data๋ฅผ ๋๊ฒจ๋ฐ์ต๋๋ค.
var data = [
{
text: 'JS ๊ณต๋ถํ๊ธฐ'
},
{
text: 'JS ๋ณต์ตํ๊ธฐ'
}
]
var todoList = new TodoList(data);
์ ๊ฐ์ ํํ๋ก ํ๋ผ๋ฉํฐ๋ฅผ ๋๊ธฐ๊ณ , ์์ฑํด์ ์ฌ์ฉํฉ๋๋ค.
- ํด๋น ์ปดํฌ๋ํธ์
render
ํจ์๋ฅผ ์์ฑํฉ๋๋ค.- ์ด ํจ์๋ ํ๋ผ๋ฉํฐ๋ก ๋๊ฒจ๋ฐ์ data๋ฅผ ์ํํ๋ฉฐ ๊ฐ ๋ฐฐ์ด์ฒจ์์ text๋ฅผ html string์ผ๋ก ๋ง๋ ๋ค,
todo-list
๋ผ๋ id๋ฅผ ๊ฐ์ง div์innerHTML
์ ์ด์ฉํด ๋ ๋๋ง ๋๋๋ก ํฉ๋๋ค. - ์ด ํจ์๋ ๋ณ๋์ ํ๋ผ๋ฉํฐ ์์ด
todoList.render()
ํํ๋ก ์คํ๋๋๋ก ๋ง๋ญ๋๋ค.
- ์ด ํจ์๋ ํ๋ผ๋ฉํฐ๋ก ๋๊ฒจ๋ฐ์ data๋ฅผ ์ํํ๋ฉฐ ๊ฐ ๋ฐฐ์ด์ฒจ์์ text๋ฅผ html string์ผ๋ก ๋ง๋ ๋ค,
Tip
- new ํค์๋์ this ํค์๋๊ฐ ์์ํ์ ๋ถ์ ์ํด ๊ฐ๋จํ ์ํ์ ์ค๋นํ์ต๋๋ค.
-
function Band(name) { // ํ๋ผ๋ฉํฐ๋ก ๋ฐ์ name์ this.name์ผ๋ก ํ ๋น this.name = name; // Band ํจ์์ perform ํจ์๋ฅผ ๋ง๋ค๊ณ ๊ทธ๊ฒ์ this.perform ์ ํ ๋น this.perform = function(){ console.log(`${this.name} ๋ฐด๋๊ฐ ๊ณต์ฐ์ ํฉ๋๋ค!`); } this.performHTML = function() { document.querySelector('#stage').innerHTML = `<div>${this.name} ๋ฐด๋๊ฐ ๊ณต์ฐ์ ํฉ๋๋ค!</div>` } } // new ํค์๋๋ฅผ ์ด์ฉํด Band ์ฌ๋ฌ๊ฐ๋ฅผ ๋ง๋ค๊ธฐ // new๋ฅผ ๋ถ์ด๊ณ ํจ์๊ฐ ์คํ๋ ๋๋ง๋ค, ํจ์ ๋ด this๋ ์ ํจ์ ์ธ์คํด์ค๋ฅผ ๊ฐ๋ฆฌํต๋๋ค. var band1 = new Band('Cold Play'); // band1.name์ ๋ฌด์์ผ๊น์? band1.perform()์ ์คํํ๋ฉด ์ด๋ค ์ผ์ด ์ผ์ด๋ ๊น์? // ๋๋จธ์ง band2, band3, band4์ ๋ํด์๋ ์๊ฐํด๋ด ์๋ค. var band2 = new Band('Foo Fighters'); var band3 = new Band('Crying Nut'); var band4 = new Band('Jaurim'); // ๋ฌด์จ ์ผ์ด ์ผ์ด๋ ๊น์? band1.performHTML(); // ๋ฌด์จ ์ผ์ด ์ผ์ด๋ ๊น์? band2.performHTML();
-
- data์ html string์ ๊ฒฐํฉํ๊ธฐ ์ํด + ๋ฅผ ์ฐ์ฐ์๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
var html = '<div>' + data[0].text + </div>
;
- string template์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
-
// ๋ฌธ์์ด์ '์ด ์๋ `(ํญ ์์ ์๋ ํค)๋ก ๋ฌถ๋ ๊ฒ์ ์ ์ํ์ธ์! var html = `<div>${data[0].text}</div>`
-
- ํน์ ํ div ๋ด์ html์ ๋ฃ์ผ๋ ค๋ฉด ์๋์ ๋ฌธ๋ฒ์ ํ์ฉํ์ธ์.
document.querySelector('#todo-list').innerHTML = 'html string';
์ฝ์ผ๋ฉด ๋์์ด ๋ ๊ธ๋ค
- JavaScript์์ ์ฌ์ฉ์์ ์ ์์ฑ์ํจ์ - ์์ฑ์ ํจ์์ ๋ํด ์ ๋ฆฌ๊ฐ ๋ ๊ธ์ ๋๋ค.
- Template literals
- ES6์ Template Literals ๋ฌธ๋ฒ์ ๋ํ ๊ธ์ ๋๋ค. ์ด๋ฒ ๋ฏธ์ ์ ์ํํ๋ฉด์ html์ string ํํ๋ก ์์ฑํ๊ฒ ๋๋๋ฐ, ์ ์ ํ
ํ์ฉํ๋ฉด data์ html string์ ๋ถ์ด๋ ์์ ์ ํธํ๊ฒ ํ ์ ์์ต๋๋ค. - this๋ ์ด๋ ต์ง ์์ต๋๋ค. - this์ ๋ํด ์ ๋ฆฌ๋ ๊ธ์ ๋๋ค.
์๋ ๋ด์ฉ๋ค์ ํ์๋ ์๋์ง๋ง, ๊ตฌํํด๋ณด๋ฉด ์ฌ๋ฐ์(?) ๋ด์ฉ๋ค์ ๋๋ค.
- new ํค์๋๋ก ํจ์์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค ๋ ์ฌ๋ฐ๋ฅธ ํ๋ผ๋ฉํฐ๊ฐ ๋์ด์ค์ง ์์ ๊ฒฝ์ฐ ์๋ฌ ๋ฐ์ํ๊ฒ ํ๊ธฐ
- null ํน์ undefined๊ฐ ๋์ด์ค๋ฉด?
- array๊ฐ ์๋ ํํ๋ก ๋์ด์ค๋ฉด?
- ๋ฐ์ดํฐ ๋ด์ฉ์ด ์ด์ํ๋ฉด?
- new ํค์๋ ์ ๋ถ์ด๊ณ ํจ์ ์คํ ์ ์๋ฌ ๋ฐ์ํ๊ฒ ํ๊ธฐ
- function ํํ์ ์ ์ธ์ธ ๊ฒฝ์ฐ์๋ง ํด๋น
์๋ฌ๋ ์ฐ์ ์๋ฌ๋ฅผ ๋ด์ผํ๋ ์ํฉ์ด ์๊ธฐ๋ ๊ฒฝ์ฐ throw new Error("error message")
๋ฌธ๋ฒ์ ์ฌ์ฉํด์ฃผ์ธ์.
[Mission1] ์ถ๊ฐ ๊ตฌํ์ฌํญ - ๋ค์ค ์ปดํฌ๋ํธ
๋ณด๋์ค ๊ตฌํ์ฌํญ
html
<div id="todo-list"></div>
์ธ์ ๋ค๋ฅธ div๋ฅผ ๋ ๊ฐ ๋ html ์ฝ๋์ ๋ง๋ญ๋๋ค.div
์id
๋ ์ ๋นํ ์ด๋ฆ์ผ๋ก ์ง์ด์ฃผ์ธ์.
js
var data = [{ ... }]
์ธ์ todo๋ฅผ ๋ด๊ณ ์๋ array data๋ฅผ ๋ ๊ฐ ๋ ๋ง๋ญ๋๋ค.- todo์ ๋ด์ฉ์ ๋ณธ์ธ์ ํ์ฌ todo๋ฅผ ๋ด์์ ๋ฃ์ผ๋ฉด ๋ ์ข๊ฒ ์ฃ ?
TodoList
์ปดํฌ๋ํธ๋ฅผ ์ด ์ธ ๊ฐ ๋ง๋ญ๋๋ค. ์ฒซ ๋ฒ์งธ ์ปดํฌ๋ํธ์๋ ์ ๊ฐ ๋ฃ์ด๋ data์#todo-list
์ ๋ ๋๋งํ๊ณ , ๋๋จธ์ง ๋ ๊ฐ๋ ์ฌ๋ฌ๋ถ์ด ์ถ๊ฐํ์ div + data๋ฅผ ํ์ฉํด์ ๋ง๋ค์ด์ฃผ์ธ์.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.