JavaScript 기초/ 실습 - 이벤트, 브라우저객체모델(BOM), 내장 객체
실습1. 이벤트 사용
1) onclick : 클릭하였을 때 이벤트
<button class="over" id="open" onclick="alert('눌렀습니다.')">상세 설명 보기</button>
버튼 클릭 시 alert 활성

- 태그에서 사용할 때는 필요할 때 바로바로 사용하기 때문에 간편하게생각할 수 있다.
- 하지만, 하나의 html파일에 여러가지 언어가 사용되어 복잡해진다. 따라서 유지보수가 안 좋은 단점이 있다.
2) 외부 js파일을 만들고, 버튼 클릭 시 설명 보이기
1. 먼저 html파일에서 외부 js파일 링크를 걸어 준다.
<script src="./js/01.js"></script>
function showDetail(){
document.querySelector('#desc').style.display = "block";
document.querySelector('#open').style.display = "none";
}
function hideDetail(){
document.querySelector('#desc').style.display = "none";
document.querySelector('#open').style.display = "block";
}
<button class="over" id="open" onclick="showDetail()">상세 설명 보기</button>
......
<button id="close" onclick="hideDetail()">상세 설명 닫기</button>

설명 보기를 누르면 활성화, 닫기를 누르면 사라지는 것을 확인
실습2. 이벤트2 - 여러 가지 이벤트 적용
1. onclick - 클릭했을 때 alert 활성
2. onmouseover - 마우스 포인터를 위로 옮겨질 때, border활성화
3. onmouseout - 마우스 포인터가 벗어날 때, border 비활성화
var coverImage = document.querySelector('#cover');
coverImage.onclick = function(){
alert('눌렀습니다.')
}
coverImage.onmouseover = function(){
coverImage.style.border = "5px solid black";
}
coverImage.onmouseout = function(){
coverImage.style.border = "";
}

내장 객체
사용자 정의 객체
속성( 프로퍼티, property )
메서드( method )
프로토타입
인스턴스
실습3. 객체 만들기
1) 객체 만들기
var book = {
title : "자바스크립트",
author : "고쌤",
pages : 500,
info : function(){
alert(this.title + "책의 분량은 "+ this.pages + "쪽 입니다.")
}
}
콘솔 창에서 만들어진 객체를 확인해 보면

2) 브라우저 창에 나타내기
var toyRobot = {
productId : "123-12",
name : "Robot",
price : 25000,
quantity : 10,
showStock : function(){
document.querySelector('#display').innerHTML
= this.name + "제품은 " + this.quantity + "개 남았습니다.";
}
}
toyRobot.showStock();

가격을 알고 싶다면 다음 함수도 객체 안에 넣어 준다.
showPrice : function(){
document.querySelector('#display').innerHTML
= this.name + "제품의 가격은 " + this.price + "입니다.";
}
......
toyRobot.showPrice();
실습4. 생성자 함수로 객체 생성하기
// 1. Book 객체를 정의
function Book(title, author, volume, price){
this.title = title;
this.author = author;
this.volume = volume;
this.price = price;
}
// 2. 객체를 인스턴스 생성
var css = new Book("CSS3 튜토리얼", "Kim", 600, 30000);
// 3. 여러 인스터스를 배열에 담아 활용
var html = new Book("웹 표준의 정석","Kim", 600, 30000);
var python = new Book("점프 투 파이썬","Kim", 600, 30000);
var bookList = [css, html, python];
document.write("<h1>책 제목 가져오기</h1>");
for (var i=0; i<bookList.length; i++){
document.write("<p>" + bookList[i].title + " (" + bookList[i].price + "원)" +"</p>");
}

실습5. 날짜 계산기
var now = new Date();
var firstDay = new Date("2018-03-23");
var toNow = now.getTime();
var toFirst = firstDay.getTime();
var passedTime = toNow - toFirst;
var passedDay = math.round(passedTime/(24*60*60*1000));
document.querySelector("#accent").innerText = passedDay + "일";
// 100일
var future = toFirst + 100 *(24*60*60*1000);
var someday = new Date(future);
var year = someday.getFullYear();
var month = someday.getMonth() + 1;
var date = someday.getDate();
document.querySelector("#date100").innerText = year + "년" + month + "월" + date + "일";
// 200일
var future = toFirst + 200 *(24*60*60*1000);
var someday = new Date(future);
var year = someday.getFullYear();
var month = someday.getMonth() + 1;
var date = someday.getDate();
document.querySelector("#date100").innerText = year + "년" + month + "월" + date + "일";
var now = new Date();
var firstDay = new Date("2018-03-23");
var toNow = now.getTime();
var toFirst = firstDay.getTime();
var passedTime = toNow - toFirst;
var passedDay = Math.round(passedTime/(24*60*60*1000));
document.querySelector('#accent').innerText = passedDay + "일";
calcDate(100);
calcDate(200);
calcDate(365);
calcDate(500);
function calcDate(days) {
var future = toFirst + days*(1000*60*60*24);
var someday = new Date(future);
var year = someday.getFullYear( );
var month = someday.getMonth( ) + 1;
var date = someday.getDate( );
document.querySelector("#date"+days).innerText = year + "년 " + month + "월 " + date + "일";
}
<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">500일</li>
<li class="item-date" id="date500"></li>
</ul>

아직 객체에 대해 정확하게 개념이 잡히지 않아서, 학습에 조금 힘들었다. 객체를 파악해두면 자바스크립트에서 엄청 편할 것으로 예상되니, 완벽히 이해하고 활용할 수 있도록 계속 복습해야 겠다.