💻 1. 웹개발_Front end/1-4 Javascript

[Javascript] 04-2 내장 객체

달님🌙 2021. 9. 12. 20:47
반응형

 

내장 객체

 

- 내장 객체란, 브라우저의 자바스크립트 엔진에 내장된 객체를 말함

- 필요한 경우 객체를 생성해서 사용할 수 있음

- 내장 객체로는 문자, 날짜, 배열, 수학, 정규 표현 객체 등이 있음

 

내장 객체 생성하기

 

1. 내장 객체를 생성하는 기본형 : 

참조변수(인스턴스 이름) = new 생성 함수()

 

2. 문법 이해

- 객체를 생성할 때는 new라는 키워드와 생성 함수( 예. Object( ) )를 사용

- 생성된 객체는 변수 tv가 참조하고 있고 이를 이용해서 객체의 속성과 메서드를 생성한다

- 생성된 객체를 이용할 때는 앞으로 참조 변수를 사용하겠다는 의미

 

3. 예제 - tv와 car 객체 생성

<!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>
    <script>
        //ES6 객체 생성 방식
        // class tv2 {
        //     constructor(color, price) {
        //         this.color = color;
        //         this.price = price;
        //     }
        //     info() {
        //         document.write("tv2 색상 : " + this.color, "<br>");
        //         document.write("tv2 가격 : " + this.price, "<br>");
        //     }
        // }
        // var tv2 = new tv2("red", 500000);

        //사용자 정의 객체 생성
        //ES5까지는 아래 두 가지 방식으로 객체 선언 및 생성
        //ES6부터는 자바와 동일하게 class로 객체 선언하고 호출 따로 가능    
        var tv = new Object();

        // 객체 속성 정의 및 값 할당
        tv.color = "white";
        tv.price = 300000;

        //객체 메서드 정의
        tv.info = function() {
            //this 객체 : 현재 선택된 객체
            document.write("tv 색상 : " + this.color, "<br>");
            document.write("tv 가격 : " + this.price, "<br>");
        }

        //사용자 정의 객체 생성 (구조체 형식)
        var car = {
            // 객체 속성 정의 및 값 할당
            color: "black",
            price: 5000000,
            //객체 메서드 정의
            info: function() {
                document.write("car 색상 : " + this.color, "<br>");
                document.write("car 가격 : " + this.price, "<br>");
            }
        }
        document.write("<h1>tv 객체 메서드 호출</h1>");
        tv.info();
        document.write("<h1>car 객체 메서드 호출</h1>");
        car.info();
    </script>
</body>
</html>

 

객체 속성 관련 메서드

 

1. 종류 

<script>
  // 1. 속성 값으로 접근하기
  
  // id 값이 "img"인 객체를 변수 img에 담는다.
  var img = document.getElementById("img");
	
  // tag 값이 "img"인 객체를 변수 img에 담는다.
  var img = document.getElementByTag("img");

  // class 값이 "btn"인 객체를 변수 btn에 담는다.
  var btn = document.getElementByClass("btn");

  // 2. 버튼 클릭 이벤트 등록 메서드
  
  // 변수 btn에 들어있는 객체에 이벤트 추가 (버튼을 'click'하면 function() 안의 코드가 실행됨)
  btn.addEventListener('click', function() { 실행코드 } );
  
 
  // 3. 객체 속성을 get / set 하는 메소드
  
  // img 객체의 속성들 중 'src' 속성의 값 가져와서 그 값이 'images/3.png'와 일치하는지 비교하기
  if(img.getAttribute('src') == 'images/3.png') { 실행코드 }

  // img 객체의 속성들 중 'src' 속성의 값을 'images/4.png'로 변경하기
  img.setAttribute('src', 'images/4.png');
</script>

 

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>DOM</title>
    <style>
        button {
            display: block;
        }
        img {
            display: block;
        }
    </style>
</head>
<body>
    <h1>이미지 변경</h1>
    <button type="button" id="btn" class="btn">이미지 변경</button>
    <img src="images/3.png" id="img" class="img">
    <script>
        // id 선택자
        var img = document.getElementById("img");
        //tag 선택자
        // var img = document.getElementsByTagName("img");
        //class 선택자
        // var img = document.getElementsByClassName("img");

        var btn = document.getElementById("btn");
        // var img = document.getElementsByTagName("button");
        // var img = document.getElementsByClassName("btn");

        //button 클릭 이벤트 등록
        btn.addEventListener('click', function() {
            //버튼 클릭 시 img 태그의 src 속성을 변경
            // getAttribute 메소드를 이용해서 토글되도록 수정
            img.setAttribute('src', 'images/4.png');
        });
    </script>
</body>
</html>

 

3. 예제 - 이미지 변경하기 (토글)

<script>
	//button 클릭 이벤트 등록
    btn.addEventListener('click', function() {
      //버튼 클릭 시 img 태그의 src 속성을 변경
      // getAttribute 메소드를 이용해서 토글되도록 수정
      if(img.getAttribute('src') == 'images/3.png') {
        img.setAttribute('src', 'images/4.png');
     } else {
        img.setAttribute('src', 'images/3.png');
      }
    });
</script>

 

4. 예제 - 이미지 이동하기

<!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>DOM</title>
    <style>
        img {
            display: block;
            position: absolute;
        }
        button {
            display: block;
        }
    </style>
</head>
<body>
    <h1>이미지 이동</h1>
    <button type="button" id="btn" class="btn">이미지 이동</button>
    <img src="images/3.png" id="img" class="img">
    <script>
        // id 선택자
        var img = document.getElementById("img");
        //tag 선택자
        // var img = document.getElementsByTagName("img");
        //class 선택자
        // var img = document.getElementsByClassName("img");

        var btn = document.getElementById("btn");
        // var img = document.getElementsByTagName("button");
        // var img = document.getElementsByClassName("btn");

        //button 클릭 이벤트 등록
        btn.addEventListener('click', function() {
            //버튼 클릭 시 img 태그의 left, top 속성을 변경
            img.style.left = '500px';
            img.style.top = '500px';
            img.style.background = 'pink';
            img.style.border = '5px solid red';
        });
    </script>
</body>
</html>

 

5. 예제 - 색상 바꾸기

<!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>DOM</title>
    <style>
        button {
            display: inline;
        }
        img {
            display: block;
        }
        div {
            display: block;
            float: left;
            width: 100px;
            height: 100px;
        }

    </style>
</head>
<body>
    <h1>색깔 바꾸기</h1>
    <div id="div1" style="background-color: red"></div>
    <div id="div2" style="background-color: yellow"></div>
    <div id="div3" style="background-color: red"></div>
    <div id="div4" style="background-color: yellow"></div>
    <button type="button" id="btn">색상 변경하기</button>
    <script>
        var div1 = document.getElementById("div1");
        var div2 = document.getElementById("div2");
        var div3 = document.getElementById("div3");
        var div4 = document.getElementById("div4");
        var btn = document.getElementById("btn");
        
        btn.addEventListener('click', function() {
            if(div1.getAttribute('style') == "background-color: red") {
                div1.setAttribute('style', 'background-color: yellow');
            } else {
                div1.setAttribute('style', 'background-color: red');
            }

            if(div2.getAttribute('style') == "background-color: yellow") {
                div2.setAttribute('style', 'background-color: red');
            } else {
                div2.setAttribute('style', 'background-color: yellow');
            }

            if(div3.getAttribute('style') == "background-color: red") {
                div3.setAttribute('style', 'background-color: yellow');
            } else {
                div3.setAttribute('style', 'background-color: red');
            }

            if(div4.getAttribute('style') == "background-color: yellow") {
                div4.setAttribute('style', 'background-color: red');
            } else {
                div4.setAttribute('style', 'background-color: yellow');
            }
    });
    </script>
</body>
</html>

 

날짜 정보 객체

 

1. 의미 :  날짜나 시간 관련 정보를 제공받고 싶을 때 날짜 객체(Date Object)를 생성

예) 달력만들기, D-day 계산기

 

2. 기본형 :

<script>
    // 현재 날짜
    var today = new Date();
    
    // 특정 날짜 (2002년 월드컵)
    var worldcup = new Date("2002/5/31"); // 큰따옴표 안에 쓸 때는 그냥 해당 월 그대로 쓰기
    var worldcup = new Date(2002, 4, 31); // 큰따옴표 안쓸 때는 월 - 1 로 계산한 값 쓰기
</script>

 

3. 날짜 관련 메서드

- 날짜의 정보를 가져오는 메서드 : get ~ 

- 날짜를 수정하는 메소드 : set ~ 

 

3. 예제 - 현재 날짜와 2002 월드컵 날짜 출력 

<!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>dateob</title>
</head>
<body>
    <script>
        //현재 날짜와 현재 시간을 가지는 날짜 객체 생성
        var today = new Date();
        //월
        var nowMonth = today.getMonth() + 1;
        //일
        var nowDate = today.getDate();
        //요일 0:일요일 ~ 6:토요일
        var nowDay = today.getDay();
        //시간
        var nowHour = today.getHours();
        //분
        var nowMinute = today.getMinutes();
        //초
        var nowSecond = today.getSeconds();

        document.write("<h1>현재 날짜 시간 정보</h1>");
        document.write("현재 월 : " + nowMonth + "<br>");
        document.write("현재 일 : " + nowDate + "<br>");
        document.write("현재 요일 : " + nowDay + "<br>");
        document.write("현재 시간 : " + nowHour + "<br>");
        document.write("현재 분 : " + nowMinute + "<br>");
        document.write("현재 초 : " + nowSecond + "<br>");

        //입력한 날짜로 된 날짜 객체 생성, 시간 미 입력시 시간은 00:00:00으로 초기화
        // 원래 5월 31일임
        // var worldcup = new Date("2002/5/31");
        // var worldcup = new Date("2002, 5, 31");
        // var worldcup = new Date("2002-05-31");

        //시간까지 초기화
        // var worldcup = new Date(2002, 5, 31, 09, 30, 30);
        var worldcup = new Date("2002-05-31 09:30:30");

        //월
        var wMonth = worldcup.getMonth() + 1;
        //일
        var wDate = worldcup.getDate();
        //요일
        var wDay = worldcup.getDay();
        //시
        var wHour = worldcup.getHours();
        //분
        var wMinute = worldcup.getMinutes();
        //초
        var wSecond = worldcup.getSeconds();

        document.write("<h1>월드컵 날짜 시간 정보</h1>");
        document.write("월드컵 월 : " + wMonth, "<br>");
        document.write("월드컵 일 : " + wDate, "<br>");
        document.write("월드컵 요일 : " + wDay, "<br>");
        document.write("월드컵 시 : " + wHour, "<br>");
        document.write("월드컵 분 : " + wMinute, "<br>");
        document.write("월드컵 초 : " + wSecond, "<br>");
    </script>
</body>
</html>

 

4. 연말까지 D-day 계산기

<!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>dateob</title>
</head>
<body>
    <script>
        var today = new Date();
        var nowYear = today.getFullYear();

        //날짜 객체 생성시에도 Month는 -1해서 입력
        var theDate = new Date(nowYear, 11, 31); // 12월 31일을 표현한 것임

        //getTime() 1970/1/1부터 경과된 시간을 밀리초로 변환해서 리턴
        var diffDate = theDate.getTime() - today.getTime();

        //Math.ceil() 소수 점 첫째자리에서 반올림
        //밀리초로 된 diffdate를 일단위로 변환
        var result = Math.ceil(diffDate / ( 1000*60*60*24));

        document.write("오늘 날짜 : " + today + "<br>");
        document.write("연말까지 D - " + result + "일 남았습니다.<br>");
    </script>
</body>
</html>

 

 

수학 객체

 

1. 의미 : 더하기, 곱하기, 나누기는 산술 연산자를 사용하면 되지만 최댓값, 최솟값, 반올림값 등은 이번에 배울 수학 객체 메서드를 이용하여 처리한다.

 

2. 수학 객체의 메서드 및 상수

 

3. 예제 - 수학 메서드에 숫자 입력하여 결괏값 반환

<!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>
        var num = 2.1234;
        //최대 값 반환
        var maxNum = Math.max(10, 5, 8, 30); // 30
        //최소 값 반환
        var minNum = Math.min(10, 5, 8, 30); // 5
        //소수점 첫 째 자리에서 반올림
        var roundNum = Math.round(num); // 2
        //소수점 첫 째 자리에서 올림
        var ceilNum = Math.ceil(num); //3
        //소수점 첫 째 자리에서 버림
        var floorNum = Math.floor(num); // 2
        //0~1사이의 난수 반환
        var rndNum = Math.random(); 
        //0~10사이의 난수 반환
        var rndNum1 = Math.random() * 10;
        //0~10사이의 난수 반환, 소수점 버림
        var rndNum2 = Math.floor(Math.random() * 11);
        //0~30사이의 난수 반환, 소수점 버림
        var rndNum3 = Math.floor(Math.random() * 31);
        //120~150사이의 난수 반환, 소수점 버림
        //원하는 구간의 난수(정수) 반환
        //Math.floor(Math.random() * (최대값(150) - 최소값(120) + 1)) + 최소값(120)
        var rndNum4 = Math.floor(Math.random() * 31) + 120;
        //원주율 반환
        var piNum = Math.PI; // 3.141592653589793
        //거듭제곱 값 반환
        var powNum = Math.pow(10, 3); // 1000
        //제곱근 값 반환
        var sqrtNum = Math.sqrt(100); // 10

        document.write("Math.max() = " + maxNum, "<br>");
        document.write("Math.min() = " + minNum, "<br>");
        document.write("Math.round() = " + roundNum, "<br>");
        document.write("Math.ceil() = " + ceilNum, "<br>");
        document.write("Math.floor() = " + floorNum, "<br>");
        document.write("Math.random() = " + rndNum, "<br>");
        document.write("Math.random() * 10 = " + rndNum1, "<br>");
        document.write("Math.floor(Math.random() * 11) = " + rndNum2, "<br>");
        document.write("Math.floor(Math.random() * 31) = " + rndNum3, "<br>");
        document.write("Math.floor(Math.random() * 31) + 120 = " + rndNum4, "<br>");
        document.write("Math.PI = " + piNum, "<br>");
        document.write("Math.pow() = " + powNum, "<br>");
        document.write("Math.sqrt() = " + sqrtNum, "<br>");
    </script>
</body>
</html>

 

4. 예제 - 가위바위보 맞추기

<!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>
        document.write("<h1>컴퓨터 가위, 바위, 보 맞추기</h1>");

        var game = prompt("가위, 바위, 보 중 선택하세요.", "가위");
        var gameNum;

        switch(game) {
            case "가위" :
                gameNum = 1;
                break;
            case "바위" :
                gameNum = 2;
                break;
            case "보" :
                gameNum = 3;
                break;
            default :
                alert("잘못 입력하셨습니다.");
                location.reload();
        }
        //var com = Math.ceil(Math.random() * 3);
        var com = Math.floor(Math.random() * 3) + 1;

        document.write("<img src=\"images/math_img_" + com + ".jpg\">");
        // document.write('<img src="images/math_img_' + com + '.jpg">');
        // document.write("<img src='images/math_img_" + com + ".jpg'>");
        
        if(gameNum == com) {
            document.write("<img src=\"images/game_1.jpg\">")
            //document.write("<img src='images/game_1.jpg'>");
            //document.write('<img src="images/game_1.jpg">');
        } else {
            document.write("<img src=\"images/game_2.jpg\">");
            //document.write("<img src='images/game_2.jpg'>");
            //document.write('<img src="images/game_2.jpg">');
        }
    </script>
</body>
</html>

 

 

배열 객체

 

1. 의미 : 변수에는 데이터가 한 개만 저장되지만 배열에는 여러 개의 데이터를 하나의 저장소에 저장할 수 있다.

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>
    <script>
        // 방법 1. 배열 먼저 생성(크기지정X) 후 인덱스로 하나씩 추가
        var arr1 = new Array();
        arr1[0] = 30;
        arr1[1] =  "따르릉";
        arr1[2] = true;
        document.write(arr1, "<br>");

        // 방법 2. 크기 지정해주기 (값을 넣지 않으면 쉼표만 계속 출력된다)
        var arr2 = new Array(10);
        document.write(arr2,  "<br>");

        // 방법 3. new 키워드를 사용하여 배열 생성
        var arr3 = new Array(30, "따르릉", true);
        document.write(arr3, "<br>");

        // 방법 4. new 키워드를 사용하지 않고 []에 값 넣어서 생성
        var arr4 = [30, "따르릉", true];
        document.write(arr4);
    </script>
</body>
</html>

 

3. 예제 - 배열 객체에 저장된 데이터 불러오기

<!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>
        var arr = [30, "따르릉", true];

        document.write("<h3>배열 값 가져오기 - 1</h3>");

        // 방법 1. 하나씩 적어서 가져오기
        document.write(arr[0], "<br>");
        document.write(arr[1], "<br>");
        document.write(arr[2], "<br>");

        // 방법 2. for문을 이용해서 가져오기
        document.write("<h3>배열 값 가져오기 - 2</h3>");
        for(var i = 0; i < arr.length; i++) {
            document.write(arr[i], "<br>");
        }

        // 방법 3. for in 구문을 이용해서 가져오기
        document.write("<h3>배열 값 가져오기 - 3</h3>");
        //for in 구문 : 배열의 인덱스값 하나씩 꺼내오기
        for(i in arr) {
            document.write(arr[i], "<br>");
        }
    </script>
</body>
</html>

 

4. 배열 객체의 메서드 및 속성

 

5. 예제 - join(), concat(), slice(), sort(), reverse(), length 

<!DOCTYPE html>
<html lang="en">
<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>
        var arr_1 = ["사당", "교대", "방배", "강남"];
        var arr_2 = ["신사", "압구정", "옥수"];
        var arr_3 = [
            "0",
            ["1", "2"],
            ["3", "4"]
        ];
        var result1;

        //배열 값 사이사이에 - 를 넣어 하나의 문자형 변수로 반환
        var result = arr_1.join("-");
        console.log("========== join ===========");
        console.log(result);
        
        //2개의 배열을 합쳐서 하나의 배열로 반환
        result = arr_1.concat(arr_2);
        result1 = arr_1.concat(arr_3);
        console.log("========== concat ===========");
        console.log(result);
        console.log(result1);

        //배열 값 오름차순 정렬
        arr_1.sort();
        console.log("========== sort ===========");
        console.log(arr_1);

        //배열 잘라서 배열 만들기(lastindex - 1)
        console.log("========== slice ===========");
        console.log(arr_1.slice(0, 1)); // 사당
        console.log(arr_1.slice(0, 2)); // 사당, 교대

        //배열 순서 거꾸로 뒤집기
        arr_2.reverse();
        console.log("========== reverse ===========");
        console.log(arr_2);

        //배열 길이 반환하기
        console.log("========== length ===========");
        console.log(arr_2.length);
    </script>
</body>
</html>

 

6. 예제 - splice(), pop(), push(), shift(), unshift() 

<!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>
        var greenArr = ["교대", "방배", "강남"];
        var yellowArr = ["미금", "정자", "수서"];

        //index 2부터 데이터 1개 삭제
        //삭제된 구간에 서초, 역삼 삽입
        greenArr.splice(0, 1, "서초", "역삼"); // 인덱스가 2인 "강남"이 빠짐
        console.log("====== splice =======");
        console.log(greenArr);

        //배열의 마지막 인덱스의 데이터 꺼내고 삭제
        var data1 = yellowArr.pop(); // "수서"가 빠지고 data1에 입력됨
        console.log("====== pop =======");
        console.log(yellowArr.length); // 2
        console.log(yellowArr); // 미금, 정자
        console.log(data1); // 수서

        //배열의 첫번째 인덱스의 데이터 꺼내고 삭제
        var data2 = yellowArr.shift();
        console.log("====== shift =======");
        console.log(yellowArr); // 정자
        console.log(data2); // 미금

        //마지막 인덱스에 데이터 밀어넣기
        yellowArr.push(data2);
        console.log("====== push =======");
        console.log(yellowArr); // 정자, 미금
        console.log(data2); // 미금

        //첫번째 인덱스에 데이터 밀어넣기
        yellowArr.unshift(data1); 
        console.log("====== unshift =======");
        console.log(yellowArr); // 수서, 정자, 미금
        console.log(data1); // 수서
    </script>
</body>
</html>

 

* 더 자세한 설명

[JavaScript]33 - Array객체 , concat() , join() , push(), pop() , unshift() , shift() : 네이버 블로그 (naver.com)

 

[JavaScript]33 - Array객체 , concat() , join() , push(), pop() , unshift() , shift()

단순 for 반복문으로 Array 객체의 요소를 확인할 때 다음과 같이 length를 사용한다. concat() 메서드joi...

blog.naver.com

 

 

문자열 객체

 

1. 문자열 객체 : 문자형 데이터를 객체로 취급하는 것으로, 자바스크립트에서 가장 많이 사용한다.

2. 문자열 객체 생성하기 기본형

<script>
  // 방법1. new 키워드와 String() 메서드 사용 
  var t = new String("hello javascript");

  // 방법2. 문자형 데이터 입력
  var t = "hello javascript";
</script>

 

3. 문자열 객체의 메서드 및 속성

 

4. 예제 - 문자열 객체 메서드

<!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>
        var t = "Hello Thank you good luck to you";

        //index가 16인 문자 반환
        document.write("======charAt======", "<br>");
        document.write(t.charAt(16), "<br>");

        //왼쪽에서 시작하여 오른쪽으로 가면서 "you"를 가장 처음 만나는 index 반환 -> 12
        document.write("======indexOf======", "<br>");
        document.write(t.indexOf("you"), "<br>");
        
        //index 16부터 오른쪽으로 "you"를 가장 처음 만나는 index 반환 -> 29
        document.write("======indexOf(16)======", "<br>"); 
        document.write(t.indexOf("you", 16), "<br>"); // 상대적인 위치값 X
        
        //왼쪽으로 가장 처음 찾은 you의 index 반환 -> 29 
        document.write("======lastIndexOf======", "<br>");
        document.write(t.lastIndexOf("you"), "<br>"); // 29번째 you가 왼쪽에서 보면 더 가까워서 

        //index 25부터 왼쪽으로 가장 처음 찾은 you의 index 반환 -> 12
        document.write("======lastIndexOf(25)======", "<br>");
        document.write(t.lastIndexOf("you", 25), "<br>"); // 인덱스 25부터하면 29번째 you는 범위안에 없음

        //처음으로 찾은 luck이라는 문자열 반환 -> match() 메소드는 숫자가 아닌 문자열을 반환!
        document.write("======match======", "<br>");
        document.write(t.match("luck"), "<br>"); // luck
        
        //처음으로 찾은 you의 index 반환
        //indexOf와의 차이점 : search는 검색 위치 지정 불가
        document.write("======search======", "<br>");
        document.write(t.search("you"), "<br>"); // 12

        //index 21부터 4개의 문자열 반환 -> substr(a, b)은 a부터 b개 만큼 반환! 
        document.write("======substr======", "<br>");
        document.write(t.substr(21, 4), "<br>"); // luck

        //index 6~12사이의 문자열 반환 -> substring(a, b)은 a부터 b-1까지 문자열 반환 
        document.write("======substring======", "<br>");
        document.write(t.substring(6, 11), "<br>"); // Thank

        //문자열에서 '처음'으로 찾은 you를 me로 치환하여 반환
        document.write("======replace======", "<br>"); 
        document.write(t.replace("you", "me"), "<br>"); // Hello Thank me good luck to you 

        //대문자를 소문자로 변환하여 반환
        document.write("======toLowerCase======", "<br>");
        document.write(t.toLowerCase(), "<br>"); // hello thank you good luck to you

        //소문자를 대문자로 변환하여 반환
        document.write("======toUpperCase======", "<br>");
        document.write(t.toUpperCase(), "<br>"); // HELLO THANK YOU GOOD LUCK TO YOU

        //문자열 길이 반환
        document.write("======length======", "<br>");
        document.write(t.length, "<br>"); // 32

        //공백문자 기준으로 문자열 분리하여 배열객체로 반환
        document.write("======split======", "<br>");
        var s = t.split(" ");
        document.write(s, "<br>"); // Hello,Thank,you,good,luck,to,you
        document.write(s[0], "<br>"); // Hello
        document.write(s[4], "<br>"); // luck

        //해당하는 문자의 아스키 코드 값 반환
        var str = "ABCD";
        document.write("======charCodeAt======", "<br>");
        document.write(str.charAt(1), "<br>"); // B
        document.write(str.charCodeAt(1), "<br>"); // 66 (B의 아스키코드)

        //아스키 코드 값에 해당하는 문자 반환
        document.write("======fromCharCode======", "<br>");
        document.write(String.fromCharCode(97), "<br>"); // a (아스키코드가 97인 문자 반환)

        var phoneNum = "01012345678";
        document.write("======phonNum======", "<br>");
        //phoneNum.substring(0, phoneNum.length - 4) : 0~length-4까지의 문자열 반환
        document.write(phoneNum.substring(0, phoneNum.length - 4) + "****", "<br>");
    </script>
</body>
</html>

 

5. 예제 - 이메일 유효성 검사

<!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>
        var userEmail = prompt("당신의 이메일은?", "");
        var arrUrl = [".co.kr", ".com", ".net", ".or.kr", ".go.kr"];

        var check1 = false;
        var check2 = false;

        //문자열에 "@"가 있으면 "@"의 index 반환, 없으면 -1 반환
        document.write('=============indexOf("@")=============', "<br>");
        document.write(userEmail.indexOf("@"), "<br>");
        if(userEmail.indexOf("@") > 0) {
            check1 = true;
        }

        document.write('=============indexOf(arrUrl[i])=============', "<br>");
        for(var i = 0; i < arrUrl.length; i++) {
            //arrUrl의 형식 하나씩 꺼내서 비교하고 해당하는 값이 존재하면 해당되는 index 반환
            // 해당하는 값이 존재하지않으면 -1 반환
            document.write(userEmail.indexOf(arrUrl[i]), "<br>");
            if(userEmail.indexOf(arrUrl[i]) > 0) {
                check2 = true;
            }
        }

        document.write('=============이메일 형식 결과=============', "<br>");
        if(check1 && check2) {
            document.write(userEmail);
        } else {
            document.write("이메일 형식이 잘못되었습니다.");
        }
    </script>
</body>
</html>

 

 

 

반응형