※ 함수 (js)
함수 = 객체
속성이 함수 => 메서드
객체 생성
- 객체 리터럴 : 중괄호 내에 1개 이상의 프로퍼티 기술해 객체 생성
<script>
var book = {
title:'어린왕자',
pages:65,
price:15000,
author: "생텍쥐페리"
};
document.write("<h2>**신간 도서 정보**</h2>");
for (var i in book){
document.write(i+" : "+book[i]+"<br>");
}
</script>
//
**신간 도서 정보**
title : 어린왕자
pages : 65
price : 15000
author : 생텍쥐페리
- 매개변수 O
<script>
var person = {
name: '김철수',
age: 26,
eat: function (food){ //메서드
document.write(this.name+"가 "+food+"을(를) 먹습니다");
//객체 안에서는 객체명 대신 this 사용 가능
},
address: '서울시 강동구'
};
person.eat("짜장면");
document.write("<br>"+person.name +"의 현재 나이는 "+person.age+"입니다");
</script>
//
김철수가 짜장면을(를) 먹습니다
김철수의 현재 나이는 26입니다
- 리턴값 O
var person = {
name: '김철수',
age: 26,
eat: function (food){
return this.name+"가 "+food+"을(를) 먹습니다";
},
address: '서울시 강동구'
};
var result = person.eat('비빔밥');
document.write(result);
document.write("<br>");
document.write("<br>"+person.name +"의 현재 나이는 "+person.age+"입니다");
//
김철수가 비빔밥을(를) 먹습니다
김철수의 현재 나이는 26입니다
※ with문
: 특정 객체 반복 사용할 시 객체명 생략하고 속성이름만 입력해도 속성값 출력 가능
ex.
with(객체명){
속성이름}
- 문제 : 속성 각각 출력 후 총점, 평균 구하기
var student = {
이름:'홍길동',
국어:90, 영어:70,
수학:88, 과학:78
};
=>
<script>
var student = {
이름:'홍길동',
국어:90, 영어:70,
수학:88, 과학:78
};
document.write("<h2>"+student.이름+"의 성적표</h2>");
document.write("국어 : "+student.국어+"<br>");
document.write("수학 : "+student.수학+"<br>");
document.write("영어 : "+student.영어+"<br>");
document.write("과학 : "+student.과학+"<br>");
</script>
<script>
var student = {
이름:'홍길동',
국어:90, 영어:70,
수학:88, 과학:78
};
with(student){
document.write("<h2>"+이름+"의 성적표</h2>");
document.write("국어 : "+국어+"<br>");
document.write("수학 : "+수학+"<br>");
document.write("영어 : "+영어+"<br>");
document.write("과학 : "+과학+"<br>");
var sum=국어+영어+수학+과학;
var avg=sum/4;
document.write("총점 : "+sum+"<br>");
document.write("평균 : "+avg);
}
</script>
- 빈 객체 생성 후 속성 추가 (동적 생성)
<script>
var student={}; //빈 객체 생성
student.이름='홍길동';
student.취미='악기';
student.특기='프로그래밍';
student.장래희망='풀스택개발자';
//toString : 객체를 문자열 형태로 반환하는 대표적 메소드
//Object 최상위객체에 속함 -> 모든 자바스크립트 객체는 toString 상속 가능
student.toString=function(){
var output ="";
for (var key in this){
output+=key +" : "+this[key] + "<br>";
}
return output;
};
document.write(student.toString());
</script>
//
이름 : 홍길동
취미 : 악기
특기 : 프로그래밍
장래희망 : 풀스택개발자
toString : function(){ var output =""; for (var key in this){ output+=key +" : "+this[key] + "
"; } return output; }
=> toString 객체까지 출력함
- toString 수정
<script>
var student={}; //빈 객체 생성
student.이름='홍길동';
student.취미='악기';
student.특기='프로그래밍';
student.장래희망='풀스택개발자';
student.toString=function(){
var output ="";
for (var key in this){
if (key!='toString'){
output+=key +" : "+this[key] + "<br>";
}
}
return output;
};
document.write(student.toString());
</script>
//
이름 : 홍길동
취미 : 악기
특기 : 프로그래밍
장래희망 : 풀스택개발자
- 속성 제거
<script>
var student={}; //빈 객체 생성
student.이름='홍길동';
student.취미='악기';
student.특기='프로그래밍';
student.장래희망='풀스택개발자';
student.toString=function(){
var output ="";
for (var key in this){
if (key!='toString'){
output+=key +" : "+this[key] + "<br>";
}
}
return output;
};
document.write(student.toString());
delete(student.장래희망); //속성 제거
document.write("==========<br>");
document.write(student.toString());
</script>
객체의 배열화 (배열에 객체 추가)
<script>
var students=[]; //배열
var student1 = {이름:'홍길동',국어:90,수학:80,영어:87}; //객체
var student2 = {이름:'김철수',국어:33,수학:85,영어:45};
//객체의 배열화
students.push({이름:'홍길동',국어:90,수학:80,영어:87});
students.push({이름:'김철수',국어:33,수학:85,영어:45});
</script>
<script>
var students=[]; //배열
var student1 = {이름:'홍길동',국어:90,수학:80,영어:87}; //객체
var student2 = {이름:'김철수',국어:33,수학:85,영어:45};
students.push({이름:'홍길동',국어:90,수학:80,영어:87}); //배열에 객체 넣음 = 객체의 배열화
students.push({이름:'김철수',국어:33,수학:85,영어:45});
students.push({이름:'박영수',국어:36,수학:95,영어:35});
students.push({이름:'이진수',국어:53,수학:75,영어:65});
for (var i in students){
students[i].getSum=function(){
return this.국어+this.영어+this.수학;
}
students[i].getAvg=function(){
return this.getSum()/4;
}
}
document.write("<h2>3학년 1반 성적표</h2>");
document.write("이름 국어 수학 영어 총점 평균<br>");
for (var i in students){
with(students[i]){
document.write(이름 + " "+ 국어+ " "+ 수학+" "+
영어+" "+getSum()+" "+getAvg()+"<br>");
}
}
</script>
내장 객체
- 수학 관련
<script>
var num1 = Math.abs(-5); //절대값
var num2=Math.pow(2,3); //제곱값
var num3=Math.sqrt(4); //제곱근
var num4=Math.max(35,4,46,774,325,2);
var num5=Math.min(33,4,636,42);
var num6=Math.ceil(2.3); //올림
var num7=Math.floor(5.7); //내림
var num8= Math.round(7.3); //반올림
var num9=Math.random(); //0~1 사이의 난수(랜덤수) 리턴
for (var i=1;i<=6;i++){
document.write("<h1>"+Math.floor((Math.random()*45)+1)+"</h1>");
}
</script>
- 문제 : 난수 사용해 가위바위보 게임
<script>
var game=['바위','가위','보'];
var my=prompt("가위바위보 게임(1.바위 2.가위 3.보) 숫자로 입력");
var com=Math.floor(Math.random()*3)+1;
document.write("<h1>나는"+game[my-1]+"를 선택했고 컴퓨터는 "
+game[com-1]+"를 선택</h1>");
document.write("<img src='../images/my_img_"+my+".JPG'>");
document.write("<br>");
document.write("<img src='../images/my_img_"+com+".JPG'>");
</script>
<script>
var game=['바위','가위','보'];
var my=prompt("가위바위보 게임(1.바위 2.가위 3.보) 숫자로 입력");
var com=Math.floor(Math.random()*3)+1;
document.write("<h1>나는"+game[my-1]+"를 선택했고 컴퓨터는 "
+game[com-1]+"를 선택</h1>");
document.write("<img src='../images/my_img_"+my+".JPG'>");
document.write(" vs ");
document.write("<img src='../images/my_img_"+com+".JPG'>");
if (my==com){
document.write("<h2>비겼습니다</h2>");
} else if ((my==1&&com==2)||(my==2&&com==3)||(my==3&&com==1)){
document.write("<h2>내가 이겼습니다</h2>");
} else{
document.write("<h2>컴퓨터가 이겼습니다</h2>");
}
</script>
- 기념일 계산 예제
<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>
<style>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
.container{
margin: auto auto;
border: 1px solid #ccc;
width: 500px;
text-align: center;
}
.day1{
padding: 10px;
}
.day1>h3{
font-size: 1.2em;
color: #666;
}
.day1 .count{
font-family: "맑은 고딕",sans-serif;
font-weight: bold;
font-size: 3.5em;
margin: 10px 10px 0 10px;
line-height: 90px;
}
.bar{
width: 100%;
margin-top: 60px;
padding-left: 20px;
height: 40px;
background-color: #747474;
color: #fff;
font-size: 1.2em;
line-height: 40px;
}
.day2{
width: 420px;
margin: 20px auto;
}
.day2 ul{
list-style: none;
border-bottom: 1px dashed #ccc;
height: 60px;
}
.day2 ul:last-child{
border-bottom: none;
}
.day2 .item_title{
float: left;
width: 160px;
font-weight: bold;
font-size: 1.5em;
line-height: 60px;
}
.day2 .item_date{
float: left;
margin-left: 80px;
font-size: 1.2em;
text-align: center;
line-height: 60px;
}
</style>
<script>
var day=prompt("언제 처음 만났나요?","yyyy-mm-dd");
var firstDay=new Date(day);
var now=new Date();
var toNow=now.getTime();
var toFirst=firstDay.getTime();
var passedTime=toNow-toFirst;
var passedDay=Math.round(passedTime/(24*60*60*1000));
//밀리초 -> 일 단위 변환
window.onload=function(){
document.querySelector("#count").innerHTML=passedDay+"일";
document.querySelector("#title").innerHTML+=" ("+day+")";
calDate(100);
calDate(200);
calDate(365);
calDate(1000);
}
function calDate(days){
var future=toFirst+days*(24*60*60*1000);
var someday=new Date(future);
var year=someday.getFullYear();
var month=someday.getMonth()+1;
var date=someday.getDate();
document.querySelector('#date'+days).innerHTML=year+
"년 "+month+"월 "+date+"일";
}
</script>
</head>
<body>
<div class="container">
<div class="day1">
<h3 id="title">우리 만난 지</h3>
<p class="count" id="count">며칠?</p>
</div>
<div class="bar">기념일 계산</div>
<div class="day2">
<ul>
<li class="item_title">100일</li>
<li class="item_date" id="date100"></li>
</ul>
<ul>
<li class="item_title">200일</li>
<li class="item_date" id="date200"></li>
</ul>
<ul>
<li class="item_title">1년</li>
<li class="item_date" id="date365"></li>
</ul>
<ul>
<li class="item_title">1000일</li>
<li class="item_date" id="date1000"></li>
</ul>
</div>
</div>
</body>
'Programming > 국비학원' 카테고리의 다른 글
220705 - 자바스크립트 - 객체, BOM (0) | 2022.07.06 |
---|---|
220704 - 자바스크립트 - 객체 (0) | 2022.07.05 |
220630 - 자바스크립트 - 반복문, 함수, 객체 (0) | 2022.07.01 |
220629 - 자바스크립트 - 변수, 연산자, 조건문(if, switch, 삼항연산자, 짧은 조건문), 반복문(for문, 향상된 for문) (0) | 2022.06.30 |
220628 - 웹페이지 구현 실습(회원가입창 완료), 자바스크립트 (변수) (0) | 2022.06.29 |