코드 그라데이션

11. 자바스크립트와 객체 (1) 객체의 의미와 내장 객체 본문

Front/Mega-JavaScript

11. 자바스크립트와 객체 (1) 객체의 의미와 내장 객체

완벽한 장면 2023. 5. 21. 15:49

객체

  • 자바스크립트에서는 프로그램에서 인식할 수 있는 모든 대상을 가리킨다.
  • 웹과 관련된 대상을 모두 객체로 인식

자바스크립트의 객체

  • 문서 객체 모델(DOM): 웹 문서 자체도 객체이고 그 안에 삽입되어 있는 이미지와 링크, 텍스트 필드 등도 모두 객체.                                        일반적으로 웹 문서에 삽입하는 요소는 document, image, link 객체 등이 있음.
  • 브라우저 관련 객체: 웹 브라우저에서 사용하는 정보도 객체로 나타낼 수 있다.                                                                                               사용하는 브라우 저 정보를 담고 있는 navigator 객체를 비롯해 history, location, screen 객체 등.
  • 내장 객체: 웹 프로그래밍을 할 때 자주 사용하는 요소는 자바스크립트 안에 미리 객체로 정의되어 있다.,                                       예를 들어 날짜, 시간과 관련된 프로그램을 개발하려면 Date 객체를 가져와 쉽게 사용할 수 있다.

 

객체의 인스턴스 만들기

  • 객체는 참조 형태로 사용해야 한다.
  • 즉, 즉, 객체 자체가 아니라 인스턴스 instance의 형태로 만들어서 사용해야 한다는 의미
  • 자바스크립트 안에 정의된 객체는 그대로 두고 객체와 똑같은 속성과 기능을 만들 수 있는데. 자바스크립트의 객체가 틀이라면 그 틀을 기본으로 해서 계속 같은 모양으로 찍어 내는 것이 인스턴스.
  • 인스턴스에 식별자를 붙여서 사용한다.
  • 객체의 인스턴스를 만들 때는 new라는 예약어를 사용하고,  new 뒤에 만들려고 하는 객체 이름을 써주면 된다.

프로퍼티와 메서드

  • 프로퍼티 : 객체의 특징이나 속성을 나타냄
  • 메서드 : 객체에서 할 수 있는 동작

프로퍼티와 메서드

 

# 마침표 표기법으로 프로퍼티와 메서드 작성하기.

  • 인스턴스는 객체의 프로퍼티와 메서드를 그대로 물려받아서 똑같이 사용한다. 
  • 메서드를 표시하려면 인스턴스명 뒤에 마침표(.)를 붙이고 객체의 프로퍼티나 메서드 이름을 작성
  • 메서드는 함수이므로 이름 옆에 괄호를 넣어야 한다.

내장 객체

1. Array 객체

- 배열 관련 

 

Array 객체로 배열 만들기

* Array 객체 인스턴스 만들기 - 초깃값이 없는 경우

var numbers = new Array(); // 배열 크기 지정 x
var numbers = new Array(4); // 배열 크기 지정 o

* Array 객체 인스턴스 만들기 - 초깃값이 있는 경우

: 인스턴스 선언과 요솟값을 한번에 할당해 작성할 수 있다.

var numbers = ["one", "two", "three", "four"]; // 배열 선언
var numbers = Array("one", "two", "three", "four"); // Array 객체를 사용한 배열 선언

 

Array 객체의 length 프로퍼티 사용하기

  • 배열 요소의 길이 구할 때 사용
  • for문을 이용하여 전체 배열의 요솟값을 나열함.

예제 : 배열 만들고 요소 표시하기

<body>
  <h1>배열의 각 요소 </h1>
	<script>
    var numbers = ["one", "two", "three", "four"];

    for(i=0; i<numbers.length; i++) {
      document.write("<p>" + numbers[i] + "</p>");
    }
	</script>
</body>

실행 결과

 

 

Array 객체의 매서드

한 번에 정리

 

1) 배열끼리 합치는 concat() 메서드

  • 어느 배열을 먼저 쓰는가에 따라 기준이 달라지고, 
  • 결과 배열의 순서도 달라진다.

2) 배열 안의 요소끼리 합치는 join() 메서드

  • 배열 안의 요소를 연결해서 하나의 문자열로 만들어 준다.
  • 각 요소 사이에 원하는 구분자를 넣을 수도 있는데, 따로 지정하지 않는다면 요소를 , 로 구분한다.

3) 새로운 요소를 추가하는 push(), unshift() 메서드

  • 배열 맨 끝에 추가하려면 전자
  • 배열 맨 앞에 추가하려면 후자
  • 배열 맨 앞과 맨 뒤에 요소를 추가하면, 원래 있던 배열이 바뀐다.

4) 배열에서 요소를 꺼내는 pop(), shift() 메서드

  • 뒤에 있는 요소 꺼낼 때 전자
  • 앞에 있는 요소 꺼낼 때 후자
  • 두 메서드는 꺼낸 요솟값을 반환하며, 기존 배열은 꺼낸 요소가 빠진 상태로 변경됨.

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>
        // 배열 2개 합치기
        var nums = [1, 2, 3];
        var chars = ["a", "b", "c", "d", "xxxx", "kkkkk"];
        
        var numChars = nums.concat(chars);
        var charNums = chars.concat(nums);
        document.write("nums에 chars 합치면 : ", numChars, "<br> chars에 nums 합치면 : ", charNums);
        document.write("<hr>");

        // 배열 안의 요소 합치기
        var string1 = nums.join();
        document.write("구분자 없이 : ", string1);
        document.write("<hr>");

        var string2 = chars.join();
        document.write("/ 구분자 지정 : ", string2);
        document.write("<hr>");

        // 배열에 새로운 요소 추가하기
        var ret1 = nums.push(4, 5);
        document.write("length: ", ret1, " | 배열: ", nums);
        document.write("<br>");
        var ret2 = nums.unshift(0);
        document.write("length : ", ret2, " | 배열: ", nums);
        document.write("<hr>");

        // 요소 추출하기 - 꺼낸 요솟값 반환
		var popped1 = chars.pop(); // 마지막 요소 꺼냄
		document.write("꺼낸 요소 : ", popped1, " | 배열 : ", chars); 
		document.write("<br>");
		var popped2 = chars.shift(); // 첫번째 요소 꺼냄
		document.write("꺼낸 요소 : ", popped2, " | 배열 : ", chars);
		document.write("<hr>");
    </script>
</body>
</html>

실행 결과

 

5) 원하는 위치에 요소를 추가, 삭제하는 splice() 메서드

  • 배열 중간에 요소를 추가하거나 삭제, 
  • 또는 한꺼번에 요소를 2개 이상 추가하거나 삭제할 때 사용
  • 이 메서드를 실행하면 삭제한 요소로 이루어진 새로운 배열이 결과값으로 반환.

 

5-1. 인수가 1개인 경우

  • 괄호 안의 인수는 배열의 인덱스 값을 의미.
  • 인수가 지정한 인덱스 요소부터 배열의 맨 끝 요소까지 삭제한다.
  • 메서드를 실행 후에는 삭제한 요소를 반호나하고 기존의 numbers 배열은 변경된 상태가 된다.

5-2. 인수가 2개인 경우

  • 첫 번째 인수는 인덱스값이고
  • 두 번째 인수는 삭제할 요소의 개수.
  • 실행 후에는 삭제한 요소를 반환하고, 기존의 배열은 나머지 요소만 남는다.

5-3. 인수가 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>ArrayTest2</title>
</head>
<body>
    <p>splice 메서드 사용하기</p>
	<script>
    // 인수가 1개일 경우
    var numbers = [1, 2, 3, 4, 5, 9 , 10];
    var newNumbers = numbers.splice(2);
    document.write("반환된 배열 : " + newNumbers + "<br>" );
    document.write("변경된 배열 : " + numbers );
    document.write("<hr>");

    // 인수가 2개일 경우
    var study = ["html", "css", "web", "jquery", "korea"];
    var newStudy = study.splice(2, 1);
    document.write("반환된 배열 : " + newStudy + "<br>");
    document.write("변경된 배열 : " + study);
    document.write("<hr>");

    // 인수가 3개 이상일 경우
    var newStudy2 = study.splice(2, 1, "js");
    document.write("반환된 배열 : " + newStudy2 + "<br>");
    document.write("변경된 배열 : " + study);
	</script>
</body>
</html>

실행 결과

 

6) 기존 배열을 바꾸지 않으면서 요소를 꺼내는 slice() 메서드

  • 시작과 끝 인덱스를 지정해서 요소를 여러 개 꺼내고, 실행 결과와 기존 배열이 바뀌지 않는다.
  • 인수를 하나만 지정하면 그 인수를 시작 인덱스로 간주하고
  • 지정한 요소부터 마지막 요소까지 꺼내서 반환한다.
  • 인수 2개를 지정하면 여러 개 요소를 꺼낼 수 있다.
  • 이것은 결국 꺼낼 요소의 구간을 지정하는 것
  • 첫 번째 인수는 배열의 시작 인덱스
  • 두 번째 인수는 끝 인덱스의 바로 직전 인덱스를 의미
  • 메서드를 실행 한 후에는 꺼낸 요소를 반환한다.

** slice() 는 기존 배열에 영향을 주지 않지만, splice()는 기존 요소를 추가 혹은 삭제하면 기존 배열 자체가 수정된다.

** 기존 배열에서 꺼낸 요소로 새로운 배열을 만들어 사용하려면 전자를, 

** 기존 배열의 일부 요소만 삭제하려면 splice()를 선택하자.

 

예제

<!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>Array3</title>
</head>
<body>
    <h3>slice 메서드</h3>
	<script>
		// 추출한 요소로 배열 만들기, 기존 배열 변경안됨 - 인수가 1개인 경우
		var colors = ["red", "green", "blue", "white", "black" , "orange"];
		var colors2 = colors.slice(2); //인덱스 2부터 끝까지
		document.write(colors2);
		document.write("<br>"); 
		// 추출한 요소로 배열 만들기, 기존 배열 변경 안 됨 - 인수가 2개인 경우
		var colors3 = colors.slice(2, 4);  // 인덱스 2, 3
		document.write(colors3);
	</script>
</body>
</html>

실행 결과


Date 객체

메서드 정리

 


Math 객체

  • 수학 계산과 관련된 메서드가 많음.
  • 하지만 수학식에서만 사용하는 것은 아님
  • ex. 무작위 수 추출 / 반올림
  • Math 객체는 Date, Array와는 달리 따로 인스턴스를 만들지 않는다.
  • Math.프로퍼티명 / Math.메서드명 (이 형태로 사용)

프로퍼티

메서드

728x90
Comments