Javascript/GMA(2302~)
23.04.20 자바스크립트 사용자 정의 객체 / 생성자 함수
hyerin1201
2023. 4. 23. 14:54
객체란 : 프로그램에서 인식할 수 있는 모든 대상, 여러개의 데이터를 하나로 묶어놓은 대상
(=> 회원 객체 > 나이 : 23, 성별 : 여, 사는 곳 : 서울)
document. = 문서객체 모델 (DOM);
window. = 브라우저 객체 모델 (BOM);
직접 개발자가 정의할 수 있는 사용자 정의 객체를 만들기!
객체명 {
key : value, => 프로퍼티
key : value, => 프로퍼티
}
let book1 = {
title : "자바스크립트",
pages : 648
};
//key의 value 값에 접근하는 방법 2가지
book1.title
'자바스크립트'
book1["pages"];
648
// 새로운 값를 추가하는 방법.
book1.author = "홍길동";
// '홍길동'
book1
// {title: '자바스크립트', pages: 648, author: '홍길동'}
let book2 = {}; //먼저 빈 객체만 지정한 후
undefined
book2.title = "파이썬"; // 값을 추가해도 됨.
'파이썬'
book2.pages = 500;
500
book2.author = "홍길동";
'홍길동'
book2
{title: '파이썬', pages: 500, author: '홍길동'} //위에서 추가한 값들이 들어감.
//변수 선언 및 할당하는 방법
let book3 = new Object(); //내장객체 Object : 객체생성의 최상위객체
undefined
book3.title = "제이쿼리";
'제이쿼리'
book3.pages = 700;
700
book3
{title: '제이쿼리', pages: 700}
delete book3.pages; // 프로퍼티를 삭제
true
book3.pages = 1000;
{title: '제이쿼리', pages: 1000}
book3.pages = undefined;
{title: '제이쿼리', pages: undefined} // key값은 존재하나, value값 삭제
//객체의중첩
let student = {
name : "Kim",
score : {
history : 85,
science : 94,
average : function() { //키값의 매칭된 함수 = 메서드(기능)
return (this.history + this.science) / 2
}
} //객체를 한번 더
}
콘솔창
student.score.history;
85
student.score.average();
89.5
객체의 메서드를 정의하는 2가지 방법 (
let book3 = {
title : "python",
pages : 360,
buy : function() {
console.log("이 책을 구입했습니다.");
}
};
let book3 = {
title : "python",
pages : 360,
buy() {
console.log("이 책을 구입했습니다."); //위와같음
}
};
콘솔창
book3
{title: 'python', pages: 360, buy: ƒ}
book3.buy();
이 책을 구입했습니다.
let book4 = {
title : "Javascript",
pages : 500,
author : "Kim",
done : false,
finish : function() {
this.done == false ? console.log("읽는중") : console.log("완독"); //복제해서 사용할 수 있음으로 this 사용
}
}
콘솔창
book4.finish();
읽는중
//****** 중요 (변수와 객체의 차이점)
let number1 = 100;
undefined
number1;
100
let number2 = number1;
undefined
number1;
100
number2;
100
number2 = 200;
200
number1;
100
number2;
200
// 원시유형 자료 복사
//변수는 고유한 값을 유지
let bag1 = {
color : "blue",
width : 30,
height : 50
};
undefined
bag1
{color: 'blue', width: 30, height: 50}
let bag2 = bag1;
undefined
bag2;
{color: 'blue', width: 30, height: 50}
bag2.color = "red";
'red'
bag2;
{color: 'red', width: 30, height: 50}
bag1;
{color: 'red', width: 30, height: 50}
// 원조값도 바뀌게됨
// => 참조 주소 복사
// 변수에서 값을 가져오는 것과 객체에서 값을 가져오는것은다르다
// 동일한 키값 및 벨류 값을 가지고 있는 프로퍼티 와 메서드 객체를 만약 100개를 만들어야 한ㄷㅏ면? = 복제
// > 생성자 함수 = 동일한 프로퍼티 및 메서드를 가지고 있는 객체를 만들때 사용할 수 있는 함수 = 붕어빵틀 ,
붕어빵 : 인스턴스 객체 ( 복제품) : 생성자 함수를 통해서 만들어진 복제된 객체
// 생성자 함수 정의 방법
//함수 이름의 첫 글자는 대문자로 시작합니다.
//반드시 'new' 연산자를 붙여 실행합니다.
//1번
function Book(매개변수1, 매개변수2, ...) {
this.매개변수1 = 매개변수1;
this.매개변수2 = 매개변수2;
this.메서드1 : function(){...}
this.메서드2 : function(){...}
}
//2번
const Book(매개변수) = function() {...}
//예제
function Book(title, pages, done) {
this.title = title;
this.pages = pages;
this.done = done;
this.finish = function() {
let str = "";
this.done == false ? str = "읽는중" : str = "완독";
return str;
}
}
let book1 = new Book("파이썬", 648, false);
let book2 = new Book("자바스크립트", 360, true);
document.write(`${book1.title} - ${book1.pages}쪽 - ${book1.finish()} <br/>`)
document.write(`${book2.title} - ${book2.pages}쪽 - ${book2.finish()}`)
// 자바스크립트 클래스 활용한 객체 생성방법
class 클래스명 {
constructor() {
프로퍼티1,
프로퍼티2,
} //생성자
메서드1() {}
메서드2() {}
}
class Book2 {
constructor(title, pages, done) {
this.title = title;
this.pages = pages;
this.done = done;
}
finish() {
let str = "";
this.done == false ? str = "읽는중" : str = "완독";
return str;
}
}
let book1 = new Book2("파이썬", 348, false);
let book2 = new Book2("자바스크립트", 620, true);
document.write(`${book1.title} - ${book1.pages}쪽 - ${book1.finish()} <br />`)
document.write(`${book2.title} - ${book2.pages}쪽 - ${book2.finish()} <br />`)