Programming Language/Javascript, ...

[JavaScript] 객체

Ma_Sand 2022. 4. 24. 22:22
반응형

객체의 선언 및 호출

   : 중괄호 {}를 사용하여 객체를 생성하고, {} 안에 객체에서 필요로 하는 속성들을 정의한다.

  - 속성값에 모든 자료형들의 값을 담을 수 있다.

  - 속성: key와 value 형태로 정의한다.

  - Java의 HashMap과 유사하다.

var 변수명 = {
    속성명1:속성값1,
    속성명2:속성값2,
    ...
};

 

 

  - 객체 내부 속성에 직접적으로 접근하는 방법

   : 방법1. 객체명['속성명']

var product = {
    pName:"냉장고",
    pCompany:"LG",
    pColor:["silver", "white", "black"]
};

divE.innerHTML += product['pName'] + "<br>";  // 냉장고
divE.innerHTML += product['pCompany'] + "<br>";  // LG
divE.innerHTML += product['pColor'] + "<br>";  // silver,white,black

 

   : 방법2. 객체명.속성명

divE.innerHTML += product.pName + "<br>";  // 냉장고
divE.innerHTML += product.pCompany + "<br>";  // LG
divE.innerHTML += product.pColor + "<br>";  // silver,white,black

 

 

  - 객체 생성 시 특이 케이스

   : 속성명을 제시할 때 공백이나 특수문자가 포함될 경우에는 반드시 문자열 형태로 제시해야 한다.

var food = {
    "food name":"떡볶이",
    "price!":"3000"
};

divE.innerHTML = food["food name"] + "<br>";
divE.innerHTML += food["price!"] + "<br>";

 

 

 

 

객체에서의 반복문

   : 객체가 가진 모든 속성들에 순차적으로 접근할 땐 반복문을 제시한다. 

       단, for in문을 사용해야 한다.(단순 for loop문으로는 불가)

let product = {
    pName:"TV",
    pCompany:"LG",
    pInch:"64",
    isAS:"true"
};

for(let key in product){
    divE.innerHTML = product[key] + "<br>";
    // product.key로 작성하면 key라는 변수를 찾기 때문에 
    // product[key]라고 작성해야 product의 key의 value값을 반환한다.
}

 

 

 

 

객체의 메소드 속성

   : 객체의 속성 중 함수 자료형인 속성을 메소드라고 한다.

var name = "김아무개";
var cat = {
    name:"애옹이",
    kind:"코리안숏헤어",
    feed:function(food){
        divE.innerHTML = this.kind+"인 "+this.name+"가 "+food+"를 먹는다." 
        // 코리안숏헤어인 애옹이가 사료를 먹는다.
    }
};
cat.feed("사료");

 

 

 

 

in과 with 

  - in: 객체 내에 해당 속성이 있는지 확인한다. 속성이 존재하는 경우 true, 아니면 false로 반환된다.

  - with: with()에 객체명을 작성하면 내부에서 객체명을 제시하는 것을 생략할 수 있다.

             속성을 추가하는 것은 불가능하고, 속성값을 가져오는 것만 가능하다.

var name = document.getElementById("name").value;
var topic = document.getElementById("topic").value;
var score = Number(document.getElementById("score").value);

var student = {
    name:name,
    topic:topic,
    score:score,
    toString:function(){
        return this.name + " " + this.topic + " " + this.score;
     }
};

// student 객체 내에 name, topic, cash라는 속성이 있는지?
area5.innerHTML += "name" in student + "<br>";  // true
area5.innerHTML += "topic" in student + "<br>";  // true
area5.innerHTML += "cash" in student + "<br>";  // false

with(student){
    area5.innerHTML += "조 이름 "+student.name+"<br>";
    area5.innerHTML += "toString"+student.toString+"<br>";  // student 생략 가능
}

 

 

 

 

객체의 속성 추가 및 제거

  - 추가: 객체명.속성명 = 속성값;

  - 제거: delete(객체명.속성명);

 

 

 

 

생성자 함수

   : new 키워드로 객체를 생성할 수 있는 함수(함수명을 제시할 때 첫 글자를 대문자로 작성한다.)

function vari(){
var student1 = new Student("김아무개", 87, 90, 100, 94);
    var student2 = new Student("박아무개", 90, 76, 90, 84);
    var student3 = new Student("최아무개", 100, 82, 80, 95);

    var students = [student1, student2, student3];

    for(var i in students){
        document.getElementById("divE").innerHTML += students[i];
    }
}

// 생성자 함수
function Student(sName, kor, eng, math, sci){
    this.sName = sName;
    this.kor = kor;
    this.eng = eng;
    this.math = math;
    this.sci = sci;
    
    // 메소드 속성 정의
    this.getSum = function(){
        return this.kor + this.eng + this.math + this.sci;
    }
    this.getAvg = function(){
        return this.getSum()/4;
    }
    this.toString = function(){
        return "이름: " + this.name + " 총점: " + this.getSum() + " 평균: " + this.getSum()/5;
    }
}

 

 

 

 

Date 내장 객체

◈ 현재 날짜 및 시간

let date = new Date();

 

◈ 지정한 날짜

   : 반환하려는 월에서 -1을 해야한다.

// 2022년 4월 1일
let date2 = new Date(2022, 3, 1);

 

◈ ms(밀리세컨초)

   : 1s = 1000ms

// 2022년 4월 1일 12:00:00:05
let date3 = new Date(2022, 3, 1, 12, 00, 00, 5000);

 

◈ 연도

   : .getFullYear()

 

◈ 월

   : .getMonth()

  - 월에 +1을 해야한다.

 

◈ 일

   : .getDate()

 

◈ 요일

   : .getDay()

 

◈ 시

   : .getHours()

 

◈ 분

   : .getMinutes()

 

◈ 초

   : .getSeconds()

 

 

반응형