본문 바로가기
내가 보려고 정리하는/JAVA

객체 정리

by alasdkfm 2022. 11. 17.

목차

    객체

    # 객체 리스트
    • DB의 ROW를 하나씩 읽어서 리스트에 담아놓은것을 의미

    객체에 함수를 하나하나 넣는 것은 비효율적, AND 함수를 따로 만든것은 효율적이긴 하나 객체지향적은 아님

    따라서 아래와 같이 생성

    • 자바와 다른점은 THIS.NAME = NAME 하면 필드에 값이 들어감. (왜냐면 어차피 값이 없으면 UNDEFINED이니까 CONSTRUCTOR 밑에 적는)
    • 클래스 내부 메소드에서도 THIS. 하면 사용가능함
    • 클래스에 함수를 만들어놓으면 프로토타입영역에 따로 생성되기 때문에, 초기에 모든 멤버에 하나하나 함수를 만든것과는 다름 (밑에 : 나쁜 예시)

     

    존재하지 않는 값 찾기 (== 사용! )

    • UNDEFINED 찾을 때도 NULL로 찾는다
    <!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>Document</title>
    </head>
    <body>
        <script>
    
            class Product
            {
                constructor(name, price)
                {
                    this.name = name;
                    this.price = price;
                }
    
                print()
                {   
                    document.write(`${this.name}의 가격은 ${this.price}원 입니다 `)
                    // 동적바인딩 가능 
                    //document.write(`<p>제조사 : ${this.company}</p>`);
    
                    this.aaa(); // JS는 자식에게만 있어도 호출이 된다  
                }
            }
    
            class Car extends Product // 상속된다 
            {
                constructor(name, price, company)
                {
                    super(name,price);
                    this.company = company;
                }
    
                //오버라이딩
                print()
                {
                    super.print();
                    document.write(`<p>제조사 : ${this.company}입니다 `)
                }
    
                aaa()
                {
                    document.write("<p>car의 ㅁㅁㅁ 메소드</p>");
                }
            }
            let car = new Car('그랜져',5000,"현대");
            car.print();
    
        </script>
    </body>
    </html>

    하지만, JS는 변수 선언하면 모든 객체를 다 받을 수 있기 떄문에 굳이 상속하고 할 필요가 있나,,, (사족이 될 수도 있음)


    표준 내장객체

    firefox가 원래 모질라엿음. 따라서 상용화된 세계 최초 브라우져는 모질라임

    브라우져 특허는 모질라에 있는데 (돈주고 샀는데) 마소에서 걍 공짜로 배포해버려서 소송 했었음

     

     

    자료형 종류(기본, 객체)

    기본자료형

    let String "삐용삐용";

    ❗ 객체가 아니므로 속성 & 메소드 추가 불가능 ❗

    let num = 35;
    //num.method = function(){};  // X 불가능
    // 따라서 프로토타입으로 추가한다
    //num.prototype.method = function(){}; // X 불가능
    
    Number.prototype.method = function()
    {
       return this.valueOf();
    }
    console.log(num.method());
    //35 반환

    객체 자료형

    let String = new String("삐용삐용");

    기본 자료형의 속성 또는 메소드를 사용할 떄 자동으로 객체로 변환된다!

    이걸 응용해서 CRUD

    Number 객체

    • toFixed()
    • let num = 3.141592; console.log(num.toFixed(1)) // 3.1 console.log(num.toFixed(4)) // 3.1415
    • 숫자를 해당소숫점까지 나타낸 문자열 리턴

    String 객체

    String은 변경된 값을 리턴한다 (재할당 필요)

    • 메소드
      • indexOf()
      • let String = "안녕 좋은아침!"; if (String.indexOF("아침") >=0 ) { console.log("굿모닝!" ); }
      • 특정 문자열이 있는지 확인 ( 문자열 없으면 -1 반환)
    •  

    Date 객체

    Month(월) 은 0부터 시작한다

    • 메소드 활용FullYear, Month, Day, Hour, Minutes, Seconds ,,
      • 시간끼리 빼서 시간 간격을 구할 수 있음
      let now = new Date(); // 현재 시간
      lst point = new Date('December 9 1999');
      
      let interval = now.getTime() - point.getTime();
      interval = Math.floor(interval / (1000*60*60*24) );
      console.log(`태어나고 ${interval}일 지났습니다`)
      // 태어나고 10886일 지났습니댜
    • get__() , set__ () 메소드 사용

    Array 객체

    *표시된 메소드는 자기 자신을 변화시킴

    • 정렬역방향 : reverse()
      • 객체 내부의 숫자로 정렬하고 출력하기
      • 내부 문자로 정렬하고 출력하기
    • 정방향 : sort()
    • forEach()
    • let array = [11,22,33,44,55]; array.forEach(item,idx) => { console.log(`${idx}번째 요소는 ${item}입니다`);}
    • 배열의 요소를 하나씩 뽑아 반복 돌림 ( for문과 비슷)
    • map()
    • 콜백 함수에서의 리턴값 기반으로 새로운 배열 생성
    • filter()
    • 콜백함수에서 리턴값이 true인것만으로 새로운 배열 생성
    • 배열의 요소를 삭제
      • pop() : 함수 배열의 마지막 요소 삭제 & 삭제된 요소 값 반환
      • var arr = ['A', 'B', 'C', 'D']; var popResult = arr.pop(); console.log(popResult); // D
      • 빈배열을 삭제하는 경우는 undefined 반환
      • shift() : 첫번쩨 요소 삭제 & 삭제된 요소값 반환
      • var arr = ['A', 'B', 'C', 'D']; var shifhtResult = arr.shift(); console.log(shifhtResult); // A
      • splice( 제거할 요소 인덱스 , 제거할 개수 ) :첫번쨰 인자를 0, 두번째 인자 생략하면 모든 배열의 모든 요소 삭제가능
      • var arr = ['A', 'B', 'C', 'D']; var splicetResult = arr.splice(1, 2); console.log(splicetResult); // ["B", "C"]
      • 반환값은 삭제한 배열의 요소를 담은 ‘배열’
      • filter () :조건에 일치하는 새 배열 생성 (기존 배열 변경x)
      • var arr = [1, 2, 3, 4, 5]; var filterArr = arr.filter(function(data) { return data < 3; }); console.log(filterArr); // [1, 2]
      • delete () : 특정 배열요소 삭제, but 배열 길이는 그대로 (빈값으로 변경하기 떄문)
      var arr = [1, 2, 3, 4, 5];
      
      delete arr[0];
      
      console.log(arr); // [empty, 2, 3, 4, 5]
      
      console.log(arr.length);// 5
      
      console.log(arr[0]); // undefined