
JavaScript: VanillaJs-DOM-#1-Basic
Goal of learning
Script language์ ๊ธฐ๋ณธ์ธ Javascript์ ๋ฐ๋๋ผJS์ ๊ฐ๋ , ๊ตฌ์กฐ ๋ฑ์ ๋ค์ ๊ณต๋ถํ์ฌ ํ์ค์ ์ฝ๋๋ฅผ ์์ฑํจ์๋ ์ ์๋ฏธํ๊ฒ ์๊ฐํ ์ ์๋๋ก ํ๋ค. ์ข์ ์ฝ๋, ์ฆ ๊ธฐ๋ฅ์ฑ,ํจ์จ์ฑ ํ์ ์ ๊ณ ๋ คํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋ชฉํ๋ฅผ ๋๋ค. ์ดํ, ๊ฐ์ฒด์งํฅ๊ณผ ES6 ๋ฑ ํ์ต๋ฒ์๋ฅผ ๋ํ๊ณ ์๋ก์ด ์คํฌ๋ฆฝํธ ์ธ์ด๋ก ํ๋ํ๊ธฐ๋ก ํ๋ค.
ํ๊ฒฝ์ค๋น
- vscode
- chrome
- live server
๋ฐ์ดํฐ
๋ณ์ ํค์๋ var
var x = 3; //์ ์
var x = 3.6; //์ค์
var x = 'A'; //๋ฌธ์
var x = "Hello"; //๋ฌธ์์ด
ํ์
์ ์ตํ ์๊ณ ์์ด ๋์ด๊ฐ๋คํ๋๋ผ๋ ๊ถ๊ธํ๊ฒ ํ๋ ์๊ธด๋ค.
์ด๋ป๊ฒ ๋ณ๋๋๋ ํ์
์ ๊ณต๊ฐ์ ํ ๋น๋ฐ๋๊ฑฐ์ง?
=> ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ณ์ ์ ์ธ์ ๊ณต๊ฐ์ ๋ง๋ จํ์ง ์๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ๋ณ์๋ ์ฐธ์กฐ๋ณ์๋ก ๊ฐ์ด ํ ๋น๋๋ ์์ ์ ๊ณต๊ฐ์ ๊ฐ๋๋ค.
์ด๋ฅผ โAuto Boxingโ์ด๋ผ ํํํ๋ค.
ํฌ์ธํฐ(์ฃผ์๋ฅผ ์ ์ฅํ๋ ๋ณ์)๊ฐ ์๋ ์ฐธ์กฐ(reference)๋ฅผ ์๋ฏธํ๋ค.
๊ฐ์์ง์๊ฒ ๊ฐ์์ง๋ผ ๋ถ๋ฅด์ง ์๊ณ ์ด๋ฆ์ ๋ถ์ด๋ ๊ฒ์ฒ๋ผ ๋ณ์๋ ์ด๋ฆ์ ๋ถ์ด๋ ๊ฒ.
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ณ์๋ ๋ชจ๋ ์ฐธ์กฐ๋ณ์์ด๋ฉฐ Wrapper class๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
//๋ณ์ ์ ์ธ์ ๋ํ ํํ์ผ๋ก ์์ฑ์ ํจ์ ํค์๋์ธ new๋ฅผ ์๋ตํ ์ ์๋ค.
//JS์ ์ ์ฐํจ์ ๋ณผ ์ ์๋ค.
var x = 3;
var x = new Number(3);
์์ ์ฝ๋๋ฅผ ํ๋ก๊ทธ๋จ ์ธ์ด์์๋ ๋ณ์x์ 3์ ํ ๋นํ๋ค. ํน์ 3์ผ๋ก ์ ์ธํ๋ค. ์ด๊ธฐํํ๋ค. ํํํ์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ๋ 3์ ๋ฐ์ดํฐ๊ฐ ๋ด๊ธด wrapper class๋ฅผ x ๋ผ๋ ์ด๋ฆ์ผ๋ก ์ฐธ์กฐํ๋ค. ๋ผ๊ณ ํํํ๋๊ฒ ์ฌ๋ฐ๋ฅด๋ค. ํ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ณ ๊ฒฐ์ ํ๋ค. ํด๋น ํ์ ์ ์ฒดํฌํ๊ธฐ ์ํด typeof ์ฐ์ฐ์๋ฅผ ์ด๋ค. JS์ ์ ์ฐ์ฑ์ ์ฅ์ ์ด๋ฉด์ ๋์์ ๋จ์ ์ด ๋๋ค. ์ด๋ค ํ์ ์ ๋ณ์์ธ๊ฐ์ ๋ฐ๋ผ ์ฌ์ฉํ ์ ์๋ ํจ์๊ฐ ๋ณ๊ฒฝ๋๊ธฐ ๋๋ฌธ์ด๋ค.
Array ๊ฐ์ฒด
//push, pop method๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ ๊ด๋ฆฌ : stack
var nums = new Array();
nums.push(5);
nums.push(10);
nums.push(20);
/*
์ ์ฌ(stack) ํํ๋ก ๋ฐ์ดํฐ๊ฐ ์์.
20
10
5
pop์ ์ด์ฉ, ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๋ฉด ์ ์ฌ๋ ์ต์ ์์๋ถํฐ ๊บผ๋ด์ค๋ฉฐ ๊บผ๋ธ ๋ฐ์ดํฐ๋ ์ฌ๋ผ์ง๋ค.
*/
var n1 = nums.pop(); // 20
var n2 = nums.pop(); // 10
var n3 = nums.pop(); // 5
//index๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ๊ด๋ฆฌ : List
var nums = new Array();
nums[0] = 5;
nums[1] = 10;
nums[2] = 20;
//pop๊ณผ ๋ฌ๋ฆฌ ๊ฐ์ ๊บผ๋ด๋ ์ฌ๋ผ์ง์ง ์๋๋ค.
alert(nums[0]);//5
/*
๋ฐฐ์ด ์ ์ธ๋ฐฉ๋ฒ
๋ค๋ฅธ ์ธ์ด์์๋ ๊ฐ์ ํ์
์ ๋ฐ์ดํฐ๋ฅผ ๋ชฉ๋กํ ํ๋๋ฐ,
JS๋ ๋ค๋ฅธ ํ์
์ ๋ฐ์ดํฐ๋ ๊ฐ๋ฅํ๋ค.
๋จ์ผํ ๊ฐ์ผ๋ก ์ ํํ์ง ์์ ๋ฐฐ์ด ๋ด ๋ฐฐ์ด๋ ์ ์ธํ ์ ์๋ค.
*/
var num = new Array(5); //5๊ฐ์ ๊ณต๊ฐ
var num = new Array(5,10,21); //3๊ฐ์ ๊ณต๊ฐ์ ๋ฐ์ดํฐ
var num = new Array(5,10,21, "hello"); //ํ์
์ฒดํฌ๋ typeof๋ฅผ ์ด์ฉ**
var num = new Array(5,10,21, "hello", new Array(2,3,4));
nums[4][1]; // ๋ฐฐ์ด ๋ด ๋ฐฐ์ด์ ๋ฐ์ดํฐ ํธ์ถ ์ : 3
//splice() ๋ฉ์๋๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ ๊ด๋ฆฌ : List
var nums_splice = new Array(5,10,21,"hello", 33, 44, 55);
//(n) index n ์ดํ ๊ฐ ์ญ์
nums_splice.splice(1);
//(n,m) index n๋ฒ์งธ ๋ถํฐ m๊ฐ ์ธ์ ์ญ์
nums_splice.splice(3,4);
//(n,m,a) index n๋ฒ์งธ ๋ถํฐ m๊ฐ ์ธ์ ์ญ์ ํ๊ณ n๋ฒ์งธ index์ a๊ฐ ์ถ๊ฐ
nums_splice.splice(2,0,"hi");
console.log(nums_splice);
Object ๊ฐ์ฒด
/*
์๋ฐ์์ ํด๋์ค์ ๊ฐ์ฒด(Object) ์ธ์คํด์ค ์ฐจ์ด
1. ํด๋์ค ์์ฑ(์ ์)
2. ํด๋์ค์ ๊ฐ์ฒด ์์ฑ
3. ํด๋์ค์ ์ธ์คํด์ค ์์ฑ(๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น)
*/
public class Animal {
...
}
//๊ฐ์ฒด์ ์ธ์คํด์ค
public class Main {
public static void main(String[] args) {
Animal cat, dog; // '๊ฐ์ฒด'
// ์ธ์คํด์คํ
cat = new Animal(); // cat์ Animal ํด๋์ค์ '์ธ์คํด์ค'(๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น)
dog = new Animal(); // dog์ Animal ํด๋์ค์ '์ธ์คํด์ค'(๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น)
}
}
/*
์๋ฐ์คํฌ๋ฆฝํธ์์์ ๊ฐ์ฒด
1. ๊ฐ์ฒด ์์ฑ
2. ๊ฐ์ฒด ์ ์
Javascript - prototype(JS๊ฐ์ฒด์งํฅ ๊ณต๋ถํ ๋ ์ค๋ช
)
- class(ES6๋ฒ์ ์ด์์ผ ๋ ์ค๋ช
)
JS๋ ๋งจ๋
์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.(์์ฑ)
ํ์ํ ์์ฑ์ด ์์ผ๋ฉด ๊ฐ์ฒด์ ๊ธฐ๋ฅ์ ๋ถ์ธ๋ค.(์ ์)
๋๋ฌธ์ ๋์ ์ธ ๊ฐ์ฒด๋ผ๊ณ ํจ(์์ฑ ํ ์ ์)
*/
//๊ฐ์ฒด๋ฅผ ๋ง๋ค์์ง๋ง ์๋ฌด๋ฐ ์์ฑ์ด ์์.
var exam = new Object();
//1. ์์ฑ์ ์ : '.' ์ด์ฉํ์ฌ ์์ฑ์ ์(=expand object)
exam.kor = 30;
exam.eng = 70;
exam.math = 80;
exam.kor = 20;
console.log(exam.kor + exam.eng);
//2. ์์ฑ์ ์ : '[ ]'
exam["jpn"] = 50;
var key = "jpn";
/*
[]๋ด์ ๊ฐ์ ๋ฌธ์์ด. exam.jpn ์ผ๋ก๋ ๊บผ๋ผ ์ ์๋ค.
exam์ '์์ฑ'์ '๋ณ์'๋ฅผ ํค๋ก ์ฌ์ฉํด์ ๊บผ๋ผ ๋๋
'.' ๋ฐฉ์์ผ๋ก ๋ถ๊ฐํ๋ฉฐ '[]' ๋ฐฉ์์ผ๋ก ๊บผ๋ด์ผ ํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ณ์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋จ์ํ ๊ฐ์ ๊บผ๋ผ ๋๋ ๋ฌด์กฐ๊ฑด '.'๋ฅผ ์ด์ฉํ๋ค.
*/
console.log(exam[key]); //50 ์ ์์ถ๋ ฅ
console.log(exam.key); //undefined
/*
๋ณ์์ ์ข
๋ฅ(์ถ๊ฐ ์ค๋ช
ํ์)
var : ํจ์๋ฒ์ ๋ณ์
let : ๋ธ๋ก๋ฒ์ ๋ณ์
const : ์์ ๋ณ์
๋ฐ์ดํฐ๋ฅผ ๋ชฉ๋กํ
์ ํ(=Array)
๋งตํ(=Map)
JAVA : Mapํ(์ปฌ๋ผ๋ช
์ผ๋ก ๋ฐ์ดํฐ๊ตฌ๋ถ)์ปฌ๋ ์
, ์ ํ(Listํ)์ปฌ๋ ์
์๋ฃ๊ตฌ์กฐ : Hashํ(์๋ณ์)
JS : Object(=Mapํ), ์ ํ(=Array))
*/
๋ฐ์ดํฐ๊ฐ์ฒด์ JSON ์์ฑ ๋ฐฉ๋ฒ
/*
Javascript Obejct
์์ ์ธ๊ธํ ๊ฒ์ฒ๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ณ์๋ฅผ ์ ์ธํ๊ณ ๊ฐ์ '๋์
'ํ๋ ๊ฒ์ด ์๋๋ผ
์๋์ ๊ฐ์ด wrapper class๋ฅผ ์ ์ธํ์ฌ ์ฐธ์กฐํ๋๋ก ๋์ด์๋ค.
ํ์ง๋ง ์ด๋ฐ ๋ถํธํ ๋ฐฉ์์ ์ฌ์ฉ์์๊ฒ ๋งค๋ ฅ์ ์ด์ง ์๋ค.
*/
var n = new Boolean(true);
var n = new Number(3);
var s = new String("hello");
var ar = new Array();
var ob = new Object();
//์ฝ๊ฒ ํํํ๊ณ ์ฌ์ฉํ๋๋ก Javascript Object Notaion(Json)ํ๊ธฐ๋ฒ์ด ์ ์ฉ๋๋ค.
var n = true;
var n = 3;
/*
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ฌธ์์ด์ ํํํ ๋ "" ๋ณด๋ค ''์ผ๋ก ๋ง์ด ์ด๋ค.
html๋ด์ ํฌํจ๋๋ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ "" ์์ ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋ ์ ์๋๋ฐ
""๊ฐ ์ค์ฒฉ๋๋ค๋ฉด ์ถฉ๋์ด ๋ฐ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
*/
var s = "hello";
var s = 'hello';
var msg = "alert("์๋
");"; //์ถฉ๋
var exam = {}; //Object ์ ์ธ ๋ค๋ฅธ ๋ฐฉ๋ฒ
exam.kor = 20; //์ ์ธ ํ ์ด๊ธฐํ ๋ฐฉ๋ฒ-1
var exam = {"kor":30, "eng":40,"math":50}; //์ ์ธ๊ณผ ์ด๊ธฐํ๋ฅผ ๋์์ ํ ์๋ ์๋ค.
var ar = [3,4,5,6,exam,[7,8,9]]; //๋ฐฐ์ด๋ json ํ๊ธฐ๋ฒ
console.log(ar[5][1]); //๋ฐฐ์ด ๋ด ๋ฐฐ์ด ์ถ๋ ฅ
console.log(ar[4].math); //๋ฐฐ์ด ๋ด ๊ฐ์ฒด ์ถ๋ ฅ
๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ํํ๋ฒ
- xml : ํ๊ทธํ์
- csv : ์ฝค๋ง ๊ตฌ๋ถ๋ฒ
- json : ์๋ ์ค๋ช
Json์ ์ค์ฒฉํํ
//json์ ์ค์ฒฉ๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ ์ฝ๊ฒ ํํ ๊ฐ๋ฅ
var notices = [{"id":1, "title":"hello1"},
{"id":2, "title":"hello2"},
{"id":3, "title":"hello3"}];
//๋๋ฒ์งธ ๊ฐ์ฒด ๋ฐ์ดํฐ ํธ์ถ EZ
console.log(notices[1].title);
//์ด์์ํฉ : ์ธ๋ถ์์ ๋๊ฒจ๋ฐ์ Json์ ๋ฌธ์์ด๋ก ๊ฐ์ธ์ง๋ค.
var noticetest = '{"id":3, "title":"hello3"}';
//๋ฌธ์์ด์ด๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ํธ์ถ์ด ๋์ง ์๋๋ค.
console.log(noticetest.title);
/*
eval() ํจ์ : ๋ฌธ์์ด๋ก ํํ๋ JS์ฝ๋๋ฅผ ์คํํ๋ ํจ์
*๊ฐ๊ธ์ ์ฌ์ฉ์ ์ง์ํ๋ค.(์ฐธ์กฐ-์ฐธ๊ณ ์ฌํญ : eval์ evil)
*/
eval('var x = 30');
console.log('x : '+x); //30
var notices1 = '[\
{"id":1, "title":"hello1"},\
{"id":2, "title":"hello2"},\
{"id":3, "title":"hello3"}\
]';
eval("var ar_noti = "+notices1+";");
console.log(ar_noti[1].id);
/*
json parser
eval์ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฝ๋๋ฅผ ์คํํด์ฃผ๋ ์ญํ ์ผ ๋ฟ
json์ ๋ฐ์ดํฐ๋ฅผ ํ์ฑํด์ฃผ๋ ํจ์๋ ์๋๋ค.
json ๋ฐ์ดํฐ๊ฐ์ฒด๋ก ๋ฐ๊ฟ์ฃผ๋ json parser๊ฐ ์๋ค.
json.parse๋ฅผ ์ฌ์ฉํ ๋๋ ๋ฐ๋์ ์์ฑ๋ช
์ ๋ฌธ์์ด("")๋ก ๊ฐ์ธ์ผํ๋ค
json ํ๊ธฐ๋ฒ++
์์ฑ๋ช
์ ๋ฌธ์์ด ํํํ๊ฑฐ๋ or ํ์ง ์์๋ ๋๋ค.
ํ์ง๋ง ์ ํจํ์ง ์์ ์์ฑ๋ช
์ธ ๊ฒฝ์ฐ ๋ฌธ์์ด๋ก ํํํ๋ค.
{"id":1, "title-2":"hello"}
*/
var data = JSON.parse('{"id":1, "title":"hello1"}');
console.log(data);
//๋ฐ๋๋ก json์ ๋ฌธ์๋ก ๋ฐ๊ฟ์ผํ ๋๋ ์๋ค.
var data2 = {id:2, title:"hello2"};
var json = JSON.stringify(data2);
console.log(json);