티스토리 뷰

1.    사용자 정의 객체를 만드는 방법

-      1 ) 객체 리터럴 방식

-       + 객체 속성 접근 방법 : 객체명.속성명 또는 객체명[‘속성명’]

-       + 주로 객체명.속성명을 사용한다. ( ex. car.speed )

-      2 ) 전역 자바스크립트 객체 ( 생성자 함수 : Object() 생성자 함수 이용 )

-       + 사용 방법 : var car = new Object();

-       + 사용 방법 : car.name = 'Sonata' ( 속성 정의 )

-      3 ) 직접 생성자 함수를 정의 (**)

-       + 사용 방법 : function car (name, color, speed){ this.name = name; .... }

-      + 3번의 방식은 필요할 때마다, 동일한 객체를 생성할 수 있다.

-       + 1, 2번의 방식으로 만든 객체는 1회성이다.

 

2.    자바스크립트로 제어할 요소를 찾아 결과를 출력하는 방법

-      1 ) innerHTML 이용

-       : 사용방법 - document.getElementById(“id”).innerHTML;

-       : 웹 문서 내에서 id명과 일치하는 요소를 찾아 내용을 출력해준다.

-      2 ) textContent 속성 이용

-       : 사용방법 – var 변수명=document.getElementById(“id”);

-       : 사용방법 변수명.textContent;

-       : 웹 문서 내에서 id명과 일치하는 요소를 찾아 변수에 반환한 후, 변수의 내용을 출력한다.

 

3.    DOM ( Document Object Model )

-      현재 브라우저가 읽어드린 HTML 문서를 구성하고 있는 모든 태그 하나하나를 “HTML Element”라는 타입의 객체로 생성하고, 모든 이 문서객체들을 태그의 포함관계에 따라서 트리형태의 계층구조로 만들어 놓은 이 tree“DOM” 또는 “DOM tree”라고 불린다.


[ 1. 사용자 정의 객체 생성 - 객체 리터럴 방식 ]

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>자바 스크립트 - 사용자 정의 객체 생성 - 객체리터럴 방식(***)</title>
</head>

<body>

    <p id="var1"></p>
    <p id="var2"></p>
    <p id="var3"></p>
    
    <script>

        const car = { 
            name : 'Sonata', 
            speed : 100, 
            color : 'white'
        }; // 사용자 정의 객체 생성

        // 객체 리터럴 방식으로 만든 사용자 정의 객체 ( 1회성 - 재사용 불가능 )

        //  + DOM을 조작하기 위한 코드

        document.getElementById("var1").innerHTML = "1. 자동차 이름 : " + car['name'];
        document.getElementById("var2").innerHTML = "2. 자동차 속도 : " + car.speed;
        document.getElementById("var3").innerHTML = "3. 자동차 색상 : " + car.color;
        // id에 맞는 요소를 찾아서, 각각의 내용을 p태그 내에 콘텐츠로 넣어 준다. (***)

    </script>

</body>

</html>


[ 2. 사용자 정의 객체 - 함수 호출 방식 ]

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>자바 스크립트 - 사용자 정의 객체 생성 - 함수 호출</title>
</head>

<body>

    <p id="msg1"></p>
    <p id="msg2"></p>
    <p id="msg3"></p>
    
    <script>

        const obj = {

            m1 : function(){
                return "Hello Sonata.";
            }, // m1

            m2 : function(a){
                let result = a;
                return result;
            }, // m2

            m3 : function(a, b){
                let result = a + b;
                return result;
            } // m3

        }; // 객체 리터럴 방식으로 1회성 객체 생성 ( 재사용 불가능 )

        document.getElementById("msg1").innerHTML = obj.m1();
        document.getElementById("msg2").innerHTML = obj.m2(100);
        document.getElementById("msg3").innerHTML = obj.m3(100, 200);

    </script>

</body>

</html>

[ 3. 사용자 정의 객체 생성 - textContent 속성 이용 ]

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>자바 스크립트 - 객체 생성 ( textContent 속성 이용 )</title>
</head>

<body>

    <p id="carname"></p>
    <p id="carcolor"></p>
    <p id="carspeed"></p>
    <p id="carspeed2"></p>
    
    <script>

        const car = {

            name : 'Sonata', 
            speed : 50, 
            color : 'white',

            start : function run(){  // 함수에 이름을 작성할 수도 있다. ( 하지만 사용할 수는 없다. )

                console.debug(`start() invoked.`);
                console.log("\t + this : ", this);

                return this.speed + 10;

            } , // start

            start2 : () => { return this.speed + 10; }
            // 람다식에서 this.은 Window를 의미하기에 NaN이 나타난다. (****)

        }; // car 사용자 정의 객체

        const cname = document.getElementById("carname");
        cname.textContent = car.name;

        const colname = document.getElementById("carcolor");
        colname.textContent = car.color;

        const colspeed = document.getElementById("carspeed");
        colspeed.textContent = car.start();

        const colspeed2 = document.getElementById("carspeed2");
        colspeed2.textContent = car.start2();


    </script>

</body>

</html>

[ 4. 사용자 정의 객체 생성 - textContent 속성 이용 2 ]

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>자바 스크립트 - 사용자 정의 객체 생성</title>
</head>

<body>

    <p id="upspeed"></p>
    <p id="downspeed"></p>
    <p id="Orignspeed"></p>
    
    <script>

        const car = {

            name : 'Sonata', 
            speed : 50, 
            color : 'white',

            speedup : function(){
                car.speed += 10;  // 속도를 계속 증감시켜준다. (****)
                return car.speed;
            }, // speedup

            speeddown : function(){
                car.speed -= 10;
                return car.speed;
            } // speed down

        }; // car 사용자 정의 객체

        var upspeed = document.getElementById("upspeed");
        upspeed.textContent = `속도 증가 : ${car.speedup()}`;

        var downspeed = document.getElementById("downspeed");
        downspeed.textContent = `속도 감소 : ${car.speeddown()}`;

        var Orignpeed = document.getElementById("Orignspeed");
        Orignpeed.textContent = `스피드 : ${car.speed}`;

    </script>

</body>

</html>

 


[ 5. 사용자 정의 객체 생성 - Object 함수 이용 ]

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>자바 스크립트 - 사용자 정의 객체 생성 방법 ( Object 함수 이용 )</title>
</head>

<body>

    <p id="carname"></p>
    <p id="carcolor"></p>
    <p id="carspeed"></p>
    
    <script>

        const car = new Object(); // 비어있는 객체 생성

        // 빈 객체에 새로운 멤버(필드 + 메소드) 추가
        car.name = "Sonata";
        car.speed = 100;
        car.color = "blue";

        car.speedup = function(){
            this.speed += 10
            return this.speed; // this.을 사용할 수 있다.
        }; // speedup

        car.speeddown = function(){
            this.speed -= 10
            return this.speed; // this.을 사용할 수 있다.

            if ( this.speed < 0 ){
                this.speed = 0;
                return this.speed;
            } // if
            
        }; // speeddown

        var cname = document.getElementById("carname");
        cname.textContent = `자동차 이름 : ${car.name}`;

        var colname = document.getElementById("carcolor");
        colname.textContent = `자동차 색상 : ${car.color}`;

        var cspeed = document.getElementById("carspeed");
        cspeed.textContent = `자동차 스피드 : ${car.speedup()}`

    </script>

</body>

</html>

[ 6. 사용자 정의 객체 생성 - 생성자 함수 이용 ] (***)

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>자바 스크립트 - 생성자 함수 정의(***)</title>
</head>

<body>
    
    <script>

        function car(model, color){

            this.model = model;
            this.color = color;
            this.speed = 0;

            this.speedup = function() {
                this.speed += 10;
                return this.speed;
            };

            this.speeddown = function() {
                this.speed -= 10;
                return this.speed;
            };

            // 사용자 정의 함수를 생성할 때에는 쉼표( , )가 아닌 세미콜론(;)을 사용해서 구분해야 한다. (**)

        } // car - 선언 문장에는 ;를 붙이지 않는다.

        var car1 = new car('Avante', 'white');

        // delete car1.color을 통해서 속성을 삭제할 수도 있다.(*)
        // 각 객체마다 다르게 필드나 메소드를 추가할 수도 있고, 삭제할 수도 있다. (***)

        var car2 = new car('Aveo', 'black');

        car2.getcolor = function(){
            return this.color;
        }; // car2에 메소드 추가 (****)

    </script>

</body>

</html>

[ 7. 배열 객체 생성 ] 

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>자바 스크립트 - 배열 객체</title>
</head>

<body>
    
    <script>

        const arr = [ 
            {model : 'Avante', color : 'white', price : 23000000 }, 
            {model : 'Aveo', color : 'blue', price : 140000000 }, 
            {model : 'Ionic5', color : 'silver', price : 70000000 } 
        ]; // 배열 객체 생성

        // 안에 있는 배열은 리터럴 방식의 사용자 정의 객체이지, 연관 배열이 아니다. ( 연관배열은 키가 문자열이어야 한다. )

        // arr[1]을 통해서 원소를 뽑아내면, {model : 'Aveo', color : 'blue', price : 140000000 } 전체가 나오기 때문에
        // arr[1].model처럼 인덱스번호.속성명을 작성해야 한다. (**)

        // let car1mo = arr[1]을 통해서, car1no.model을 작성하여 알아볼 수도 있다.

        // arr[0].getColor = function() {return this.color;}를 통해 메소드를 추가할 수도 있다.

        // window 객체에서 메소드나 필드를 추가할 수 있다.

    </script>

</body>

</html>

[ 8. 배열 객체  - 2차원 배열 생성 ]

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>자바 스크립트 - 배열객체 ( 2차원 배열 )</title>
</head>

<body>

    <p id="car"></p>

    <p>[ Car1 속성 ]</p>
    <p id="car0"></p>

    <p>[ Car2 속성 ]</p>
    <p id="car1"></p>

    <p>[ Car3 속성 ]</p>
    <p id="car2"></p>
    
    <script>

        // Array 생성자 함수를 이용하여, 배열객체를 생성하되 
        // 생성자 함수의 매개변수의 인자값으로 3개의 1차원 배열을 주었다.
        
        const car = new Array (
            ['Sonata', 'blue', 100], 
            ['Jeep', 'red', 70], 
            ['Passt', 'white', 150]
        ); // 2차원 배열 생성

        // DOM에서 id가 car인 문서객체 선택
        let cname = document.getElementById("car");

        // 바로 위의 코드로 DOM에서 찾은 문서객체의 컨텐츠를 변경한다.
        cname.textContent = `car[2][1] : ${car[2][1]}`; // 2차원 배열 원소

        // 인덱스 번호는 0번부터 시작한다.

        for( let i = 0; i < 3; i++ ){

            // id값이 car0 ~ car2까지에 해당하는 요소를 선택한다.
            cname = document.getElementById("car"+i);
            cname.textContent = car[i]; // 선택한 각 요소의 컨텐츠를 텍스트로 변경

        } // for

    </script>

</body>

</html>
더보기

[ 출력 결과 ]

자바 스크립트 - 배열객체 ( 2차원 배열 )

[ Car1 속성 ]

[ Car2 속성 ]

[ Car3 속성 ]


[ 9. Date 객체 ] (***)

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>자바 스크립트 - Date 객체</title>
</head>

<body>
    
    <p id="d1"></p>
    <p id="d2"></p>
    <p id="d3"></p>
    <p id="d4"></p>

    <script>

        // 1. 기본 생성자
        // document.getElementById("d1").innerHTML = new Date();

        // -----------------------------------------------------------------------------------------------------
        document.querySelector("#d1").innerHTML = new Date(); // 이 방법이 더 실전에 많이 사용된다. (***)
        // document.querySelectorAll("#d1").innerHTML = new Date(); // 여러개를 한번에 선택하려고 할 때 사용한다.
        // -----------------------------------------------------------------------------------------------------

        // 2. 1970.01.01 이후의 밀리초 계산
        // document.getElementById("d2").innerHTML = new Date(1491803527400);

        // -----------------------------------------------------------------------------------------------------
        document.querySelector("#d2").innerHTML = new Date(1491803527400); // 실전에서의 표준방식 (***)
        // -----------------------------------------------------------------------------------------------------

        // 3. 문자열 날짜
        // document.getElementById("d3").innerHTML = new Date("October 15, 2018 06:18:07");

        // -----------------------------------------------------------------------------------------------------
        document.querySelector("#d3").innerHTML = new Date("October 15, 2018 06:18:07"); // (***)
        // -----------------------------------------------------------------------------------------------------

        // 4. 날짜 지정 ( 주의사항 : 월은 0부터 시작 )
        // document.getElementById("d4").innerHTML = new Date(2018, 11, 25, 18, 30, 29);

        // -----------------------------------------------------------------------------------------------------
        document.querySelector("#d4").innerHTML = new Date(2018, 11, 25, 18, 30, 29); // (***)
        // -----------------------------------------------------------------------------------------------------

        // 자바스크립트는 함수의 오버로딩이 적용되지 않으나, Date 객체의 경우 타입스크립트로 보여주기 때문에 오버로딩이 가능한 것처럼 보인다. (****)

    </script>

</body>

</html>
더보기

[ 출력 결과 ]

자바 스크립트 - Date 객체


[ 10. Date 객체 2 + JSON ]  (*****)

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>자바 스크립트 - Date 객체2 (****)</title>
</head>

<body>
    
    <!-- p[id=p01]*9 -->

    <p id="p01"></p>
    <p id="p02"></p>
    <p id="p03"></p>
    <p id="p04"></p>
    <p id="p05"></p>
    <p id="p06"></p>
    <p id="p07"></p>
    <p id="p08"></p>
    <p id="p09"></p>


    <script>

        var today = new Date();

        document.querySelector("#p01").innerHTML = today.toDateString();
        document.querySelector("#p02").innerHTML = today.toISOString();

        document.querySelector("#p03").innerHTML = today.toJSON();              // 데이터를 주고받을때 가장 많이 사용하는 포멧팅 (********)

        // JSON : JavaScript Object Notation ( 자바스크립트 객체를 문자열로 표현한 것 )
        // JSON.stringify(arr); 를 통해 객체를 제이슨 문자열로 변형해주고, JSON.parse(arr);을 통해 다시 객체로 바꿔줄 수 있다. 

        document.querySelector("#p04").innerHTML = today.toLocaleDateString();  // (***)
        document.querySelector("#p05").innerHTML = today.toLocaleTimeString();  // (***)
        document.querySelector("#p06").innerHTML = today.toLocaleString();      // 우리나라 시간 체계에 가장 적합한 방법이다. (****)
        document.querySelector("#p07").innerHTML = today.toString();
        document.querySelector("#p08").innerHTML = today.toTimeString();
        document.querySelector("#p09").innerHTML = today.toUTCString();
        
    </script>

</body>

</html>

[ 11. Date 객체 응용 ] (***)

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>자바 스크립트 - Date 객체 응용</title>
</head>

<body>

    <div id="digclock"></div>
    
    <script>

        function digclock() {

            let today = new Date();
            let day = `${today.getMonth() + 1 }월 ${today.getDate()}일`;
            let time = `${today.getHours()}시 ${today.getMinutes()}분 ${today.getSeconds()}초`;

            // 월은 0월부터 시작하기에 1을 더해줘야 한다. (**)

            document.querySelector("#digclock").innerHTML = day + time;

            setTimeout('digclock()', 1000);

            // setTimeout() 내장 함수는 매 1초마다 지정된 함수를 호출하는데 사용한다. (**)
            // 이 함수는 1. 호출할 함수명, 2. 주기(timeout) 지정해야 한다.
            // 단, 1회성 설정이다. 

        } // dig clock

        digclock();

    </script>

</body>

</html>
더보기

[ 출력 결과 ]

자바 스크립트 - Date 객체 응용

 

 

 

728x90
댓글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
최근에 올라온 글
Total
Today
Yesterday
공지사항