국비 교육 내용 정리

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;
}
}