국비 교육 내용 정리
2023년 05월 19일 수업 내용
jinpark1992
2023. 5. 19. 11:32
<자바 스크립트>
//JS 객체 생성 방법
//1)
//2)
//3)
//4) ES6 Class 기반 객체 생성 방식
class chart {
// 멤버 변수
// 생성자
constructor(width,height){
this.width = width;
this.height = height;
}
// 메소드
drawline(){
console.log("draw line");
}
}
const mychart = new chart(100,100);
mychart.drawline();
//1) 객체 리터별 방식 {} : 값을 넣어 주는 방식 제일 중요함!
// JS - 프로퍼티 키(key), 프로퍼티 값(value)
// java -필드(멤버변수),메서드(멤버함수)
// python - 속성(attribute,변수), 메소드
// CSS - 속성(property), 값
// HTML - 속성(attribute), 값
const user = {
//속성
name: "Arnie",
age : 30,
//메소드
getData: function(){ //유형1
return 1 + 2;
},
getName(){ //유형2
console.log(this.name);
}
}
console.log(typeof user); // object
//객체 프로퍼티 값 가져오기
console.log(user.name);
console.log(user.age);
console.log(user.getData());
//빈 객체 선언 후, 프로퍼티와 메소드 추가
const emptyobj = {};
emptyobj.name = "Aleyna";
emptyobj.age = "25";
emptyobj.getData = function(){
return 4 * 100;
}
console.log(emptyobj);
console.log(typeof emptyobt);
console.log(emptyobj.name, emptyobj.age,emptyobj.getData());
// 객체 안에 객체 생성 가능
let user ={
name: "Rose",
age: 20,
getData: function(){
return "사용자";
},
details:{
hobby: 'coding',
majar: 'security',
getName: function(name){
return name;
}
}
}
console.log(user);
console.log(user.name,user.age,user.getData());
console.log(user.details);
console.log(user.details.hobby);
console.log(user.details.getName('Jake'));
// 객체 리터럴과 this 키워드(1)
let user = {
name: "John",
age: 40,
details: {
hobby: 'swimming',
major: 'law',
getHobby: function(){
return this.hobby;
}
}
}
console.group(user.details.getHobby());
// 객체 리터럴과 this 키워드(2)
let user = {
firstName: "Mike",
lastName: "Jagger",
age: 40,
details: {
hobby: 'swimming',
major: 'law',
getHobby: function(){
return this.hobby;
}
}
}
console.group(user.details.getHobby());
console.log(user.firstName);
console.log(user['firstName']);
console.log(user['first + Name']);
- 어제 내용해서 플러스 한 내용임
// for-of
// 배열(Array),string,map 등 iterable(반복 가능한) 객체에서 사용가능한 반복문
const brands = ["애플","구글","페이스북","아마존","삼성전자"];
for (let brand of brands){
console.log(brand);
}
let language = "Javascript"
for(let c of language){
console.log(c);
}
let user = {
firstName: "Mike",
lastName:"Jagger",
age: 40
}
// for(let p of user){
// // object는 iterable 하지 않기 때문에 for-of 사용 x
// }
- for in 방식 설명
// for-in
// 배열,객체(object)에 사용할 수 있는 반복문
const brands = ["애플","구글","페이스북","아마존","삼성전자"];
for(let brand in brands){
console.log(brand);
}
const person = {
firstName: "jinsu",
lastNmae:"park",
age: 30
}
for(let key in person){
console.log(key);
console.log(person[key]);
}
- for문의 기본 구조~ ( 여기서 핵심은 for each)
// for문의 기본 구조
// forEach( 메서드)
// 반환값이 없다. 단순 for문과 같이 작동한다.
const numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
console.log(numbers[0]);
console.log(numbers[1]);
console.log(numbers[2]);
console.log(numbers[3]);
console.log(numbers[4]);
console.log(numbers);
for(let i = 0; i<numbers.length; i++){ // 개수 모르면 length로 해주면 됨!
console.log(numbers[i]);
}
// function print(element){
// console.log(element);
// };
// numbers.forEach(print);
numbers.forEach(function(el){
console.log(el);
});
numbers.forEach(function(el){ // 2의 배수 만들
if (el%2 == 0){
console.log(el);
}
})
const movies = [
{
title:'Amadeus',
score: 99
},
{
title:'Alien',
score: 99
},
{
title:'SquidGame',
score: 99
},
{
title:'Stand By Me',
score: 99
},
]
movies.forEach(function(movie){
console.log(movie);
}
)
- map() 이라는 함수의 기능 정리
// map()
// 반환값을 배열에 담아 반환한다.
// map() 에는 return문이 무조건 있어야함
// 새로운 배열이 만들어짐
const numbers =[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
console.log(numbers);
const doubles = numbers.map(function (num){
return num * 2;
});
console.log(doubles);
const movies = [
{
title:'Amadeus',
score: 99
},
{
title:'Alien',
score: 99
},
{
title:'SquidGame',
score: 99
},
{
title:'Stand By Me',
score: 99
},
]
const titles = movies.map(function(movie){
return movie.title;
});
console.log(titles);
- 화살표 함수!
// 화살표 함수(arrow,function)
//() => {} vs. function (){}
const double = function(x){ // 익명 함수(함수 표현식)
return x * 2;
}
console.log(`double:`,double(7));
const arrow = (x) => {
console.log(`arrow 복문 실행문`)
return x * 2;
}
console.log(`arrow`,arrow(7));
const arrow2 = (x) => x * 2; // 블록 안 실행문이 1개일때 return 생략 가능
console.log(`arrow2`,arrow2(7));
const arrow3 = x => x * 2;
console.log(`arrow3:`,arrow3(7));
const arrow4 = x => { return x * 2;}
console.log(`arrow4`,arrow4(7));
// null, undefined 배열, 객체 다 올수 있음
const arrow5 = x => 1234;
console.log(`arrow5`,arrow5(7));
const arrow6 = x => {
return {name:`Arnie`}
}
console.log(`arrow6`,arrow6(7));
//객체 데이터는 화살표 함수의 중괄호와 같으므로 그냥은 인식이 안됨
//객체 데이터를 반환할 때는 소괄호()로 감싸줘야 함 (return 문 없는 경우)
const objVal = x => ({
name: 'Arnie'
})
console.log('objVal', objVal());
- 필터 함수! (잘못 적은 부분이 있음 .. .찾아봐야함)
//filter()
//반환값을 배열에 담는다.(return문이 있어야함)
//조건에 충족하는(true) 아이템만 배열에 담아 반환한다.
const numbers =[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
console.log(numbers);
const lt10 =numbers.filter(function(num){
return num < 10;
});
console.log(lt10);
const nums = numbers.filter(num => {
return num < 10;
});
console.log(nums);
console.log(doubles);
const movies = [
{
title:'Amadeus',
score: 99
},
{
title:'Alien',
score: 99
},
{
title:'SquidGame',
score: 99
},
{
title:'Stand By Me',
score: 99
},
{
title:'Shinsaegae',
score: 70
}
]
const goodmovies = movies.filter(m => m.score >=90);
console.log(goodmovies);
- some 함수
// some()
// 조건에 충족하는 아이템이 하나라도 있으면 true 반환, 아니면 false 반환
const ceoList = [
{name: "Larry page", age: 23, ceo: true},
{name: "Tim cook", age: 40, ceo: true},
{name: "Elon Musk", age: 55, ceo: false}
];
let data = ceoList.some(item => item.age>40);
console.log(data);
//every()
// 모든 배열에 아이템이 조건을 충족하면 true 반환, 아니면 false 반환
//find()
//조건에 충족하는 아이템 하나만 반환 (여러 개라고 하면 첫번째것만 반환)
//조건에 충족하는 아이템의 인덱스값 반환(여러 개라면 첫번째 아이템의 인덱스 번호만 반환)
<math 이 무엇인가?!>
// Math
//round() 반올림 처리
console.log(Math.round(4.9)); //5
console.log(Math.round(4.2)); //4
console.log(Math.round(4.9)); //5
console.log(Math.round(-4.2)); //-4
// ceil() 무조건 올림 처리
console.log(Math.ceil(4.4)); //5
// floor()무조건 내림 처리
console.log(Math.floor(4.8));
// trunc() 소수 부분은 무조건 버리고 정수 부분만 반환
console.log(Math.trunc(4.8)); //4
// abs() 절대값
console.log(Math.abs(-4)); //4
// random(): 0.0 이상 1.0 미만
console.log(Math.random());
// 0에서 100 사이의 정수
console.log(Math.floor(Math.random() * 100)+1);
console.log(Math.floor(Math.random() * 101));
<String 객체>
//String 객체
//length
let txt = "abcdefgi"
console.log(txt.length);
//split()
const tags ="키보드, 기계식, 블루투스";
const arr = tags.split(",");
console.log(arr);
console.log(arr.length-1);
let birthDate = "1990-11-11";
let arr2 = birthDate.split("-");
console.log(arr2);
<DOM 객체> : 뜯어보기
// window 객체: 전역객체 (Global object)
// DOM 객체 : document,
// BOM 객체 : navigator, screen, location ...
// JS 내장 객체:object, String, Array, Math, ....
//DOM (Document obect Model)
console.log(document);
console.log(typeof document); //object
console.dir(document);
document.getElementById('title')
const title = document.getElementById('title');
// window
window.console.log("hi");
console.log("hi");
window.console.log(window);
console.log(window.innerWidth)
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.box{
border: 1px solid #000;
}
</style>
</head>
<body>
<div class="box">콘텐트1</div>
<div class="box">콘텐트2</div>
<div class="box">콘텐트3</div>
<div class="box">콘텐트4</div>
<script>
const boxEls = document.querySelectorAll('.box');
boxEls.forEach(function(boxEl, index){
boxEl.classList.add(`order-${index+1}`);
console.log(index, boxEl);
});
const boxEl = document.querySelector('.box');
console.log(boxEl.textContent);
boxEl.textContent = 'Hello!';
console.log(boxEl.textContent);
</script>
</body>
</html>
//id로 선택하기
const myTag = document.getElementById('#number');
console.log(myTag);
const myTag2 = document.getElementById('btns');
console.log(myTag2);
// class로 선택하기
const myTags = document.getElementsByClassName('color-btn');
console.log(myTags);
console.log(myTags[1]);
console.log(myTags.length);
for(let tag of myTags){
console.log(tag);
}
const myTags2 = document.getElementsByClassName('red');
console.log(myTags2);
console.log(myTags[0]);
const myTags3 = document.getElementsByClassName('white');
console.log(myTags3 === null);
console.log(myTags3.length);
// CSS 선택자로 선택하기
// qurysecleter 만 . 을 씀!!
const myTag = document.querySelector('#number');
console.log(myTag);
const myTag2 = document.getElementById('number');
console.log(myTag2);
const myTag3 = document.querySelector('.color-btn');
console.log(myTag3); // 해당하는 제일 첫번째거를 선택함
const myTag4 = document.querySelectorAll('.color-btn');
console.log(myTag4); // 그래서 전부 출력하는 방법이 있음(대다수 이걸 사용함~)
const myTag5 = document.getElementsByClassName('color-btn');
console.log(myTag5);
* 이벤트 핸들링
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#number { font-size: 100px;}
.color-btn{
width: 30px;
height: 30px;
margin-top: 15px;
cursor: pointer;
}
.red{
background-color: red;
}
.orange{
background: orange;
}
.yellow{
background-color: yellow;
}
.green{
background-color: green;
}
.blue{
background-color: blue;
}
.peru{
background-color: peru;
}
.purple{
background-color: purple;
}
.black{
background-color: black;
}
</style>
</head>
<body>
<h1 id="title">DOM(Document object Model)</h1>
<div id="number">0</div>
<div id="btns">
<div>
<button id="decrease">-</button>
<button id="increase" onclick="increase()">+</button>
</div>
</div>
<div>
<button class="color-btn red" data-color="red"></button>
<button class="color-btn orange" data-color="orange"></button>
<button class="color-btn yellow" data-color="yellow"></button>
<button class="color-btn green" data-color="green"></button>
<button class="color-btn blue" data-color="blue"></button>
<button class="color-btn peru" data-color="peru"></button>
<button class="color-btn purple" data-color="purple"></button>
<button class="color-btn black" data-color="black"></button>
</div>
<script src="test04.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#number { font-size: 100px;}
.color-btn{
width: 30px;
height: 30px;
margin-top: 15px;
cursor: pointer;
}
.red{
background-color: red;
}
.orange{
background: orange;
}
.yellow{
background-color: yellow;
}
.green{
background-color: green;
}
.blue{
background-color: blue;
}
.peru{
background-color: peru;
}
.purple{
background-color: purple;
}
.black{
background-color: black;
}
</style>
</head>
<body>
<h1 id="title">DOM(Document object Model)</h1>
<div id="number">0</div>
<div id="btns">
<div>
<button id="decrease">-</button>
<button id="increase" onclick="increase()">+</button>
</div>
</div>
<div>
<button class="color-btn red" data-color="red"></button>
<button class="color-btn orange" data-color="orange"></button>
<button class="color-btn yellow" data-color="yellow"></button>
<button class="color-btn green" data-color="green"></button>
<button class="color-btn blue" data-color="blue"></button>
<button class="color-btn peru" data-color="peru"></button>
<button class="color-btn purple" data-color="purple"></button>
<button class="color-btn black" data-color="black"></button>
</div>
<script src="test04.js"></script>
</body>
</html>
// 이벤트 핸들링 : 이거 재밌겠다~
// 1) selecting
const numberTag = document.getElementById('number');
const minusbtn = document.querySelector('#decrease');
let number = numberTag.textContent;
// 2) 이벤트 핸들링
minusbtn.onclick = function() {
number--;
numberTag.textContent = number;
console.log('숫자가 1만큼 감소됐습니다.');
}
function increase() {
number++;
numberTag.textContent = number;
console.log('숫자가 1만큼 증가됐습니다.');
}
const colorBtns = document.getElementsByClassName('color-btn');
for(let btn of colorBtns){
btn.onclick =function(){
numberTag.style.color = btn.dataset.color;
}
}