: 객체의 속성 중 함수 자료형인 속성을 메소드라고 부른다
ex) 객체 var dog { name : "복실이", kind : "비글", eat : 함수(){} };
=> 객체안에 속한 eat이 함수면 이를 메소드라고 함.
<button onclick="test4();">실행확인</button>
<div class="small" id="area4"></div>
<script>
function test4(){
var area4 = document.getElementById("area4");
var name = "김민국";
var dog = {
name : "복실이",
kind : "비글",
eat : function(food){ // dog라는 객체에 eat의 메소드!라고 함
// area4.innerHTML += "eat 메소드가 호출되었습니다. <br>";
// area4.innerHTML += food; // food라는 곳에 변수 내용 담겠다.
// xx 종류인 xxx가 xxx을 먹고있어요. 라는 내용 출력하고 싶음.
// 해당 메소드내에서 해당 객체의 속성을 호출하고자 한다면 this.붙여서 제시해야 됨
// => .this를 붙이지 않으면 메스도 밖의 변수에서 값을 찾게되므로,
// 밑에 함수를 보면 kind, name이 객체 밖에 존재하지 않으므로 못찾음.
area4.innerHTML += this.kind + "종류인" + this.name +
"가" + food + "을 먹고 있어요. <br>"
}
};
dog.eat("사과"); // dog라는 객체에 eat이라는 속성에 접근하면 function(food)로 호출됨!
}
</script>

: 일일이 넣지 말고 반복문으로 넣기!
<button onclick="test1();">실행확인</button>
<div class="area" id="area1"></div>
<script>
function test1(){
var student0 = {name:"김민국", java:100, oracle:90, html:90, css:70};
var student1 = {name:"김말똥", java:90, oracle:80, html:60, css:70};
var student2 = {name:"김춘추", java:90, oracle:90, html:90, css:40};
var student3 = {name:"김유신", java:100, oracle:70, html:80, css:100};
var student4 = {name:"김좌근", java:70, oracle:80, html:80, css:100};
var students = [student0, student1, student2, student3, student4];
// console.log(students);
// console.log(students.length);
// console.log(students[0]);
// 객체 배열에 속성 추가하고싶으면
// students[0].javascript = ; 일일이 하나씩 이렇게 인덱스 넣고, 내용넣고 넘넘 힘듬
// 반복문 활용하기 for in 문
for(var i in students){
students[i].javascript = 100;
students[i].getSum = function(){
return this.java + this.oracle + this.html + this.css + this.javascript
};
students[i].getAvg = function(){
return this.getSum() / 5;
};
}
console.log(students);
var area1 = document.getElementById("area1");
for(var i in students){
area1.innerHTML += "이름 : " + students[i].name
+ ", 총점 : " + students[i].getSum()
+ ", 평균 : " + students[i].getAvg() + "<br>";
}
}
</script>
: new 키워드를 사용해서 객체를 생성할 수 있는 함수를 의미(함수명 제시시 첫글자를 대문자로)
<button onclick="test2();">실행확인</button>
<div class="area" id="area2"></div>
<script>
function test2(){
var student0 = new Student("김민국", 80, 70, 90, 100, 100);
var student1 = new Student("김춘추", 90, 80, 80, 80, 100);
var students = [student0, student1];
var area2 = document.getElementById("area2");
for(var i in students){
area2.innerHTML += students[i];
}
var myPhone = new Cellphone("아이폰 zero", 130);
console.log(myPhone);
// instanceof 연산자
// 해당 객체가 해당 생성자 함수로 생성된 객체일 경우 true 아니면 false반환
console.log(myPhone instanceof Cellphone);
console.log(myPhone instanceof Student);
}
function Cellphone(pName, price){
this.pName = pName;
this.price = price;
}
function Student(name, java, oracle, html, css, javascript){
// 일반 속성 정의
this.name = name;
this.java = java;
this.oracle = oracle;
this.html = html;
this.css = css;
this.javascript = javascript;
// 메소드 속성 정의
this.getSum = function(){
return this.java + this.oracle + this.html + this.css + this.javascript;
}
this.getAvg = function(){
return getSum() / 5;
}
this.toString = function(){
return "이름 : " + this.name + ", 총점 : " + this.getSum() + ", 평균 : " + this.getAvg();
}
}
</script>
<button onclick="test1();">실행확인</button>
<div class="small" id="area1"></div>
<script>
function test1(){
var num1 = new Number(123.456789); // Integer
var num2 = 123; // Int
var area1 = document.getElementById("area1");
area1.innerHTML += "num1 : " + num1 + ", 자료형 : " + typeof(num1) + "<br>";
area1.innerHTML += "num2 : " + num2 + ", 자료형 : " + typeof(num2) + "<br>";
// 반올림 처리 : Math.round(숫자) => 반올림된 결과 number타입(자릿수)
// 반올림 처리 : 숫자.toFixed(자릿수) => 반올림된 결과 string타입(자릿수)
area1.innerHTML += "num1.toFixed(1) : " + num1.toFixed(1) + "<br>";
area1.innerHTML += "num2.toFixed(4) : " + num2.toFixed(4) + "<br>";
// 빈 자리는 0으로 채움
}
</script>
: String 객체의 메소드는 크게 기본 메소드와 HTML과 관련된 메소드로 구분됨
=> 기본 메소드는 이전에 했으므로 HTML 관련 메소드!
....
: Date(년, 월, 일, 시, 분, 초, 밀리세컨)
: 2021년 7월 22일 까지 남은 일 수 D-day
<script>
var end = new Date(2021, 7-1, 22); //종강날짜
var now = new Date(); //현재날짜
console.log(end-now);
// 현재 날짜부터 종강날짜까지 몇 밀리세컨초 남았는지 알려주고 있음
/*
1s == 1000ms
1m == 60s == 60*1000ms
1h == 60m == 60*60s == 60*60*1000ms
1d == 24h == 24*60m == 24*60*60s == 24*60*60*1000ms
*/
// var dday = end - now; // ms 단위
// var dday = (end-now)/1000; // s단위
// var dday = (end-now)/1000/60; // m단위
// var dday = (end-now)/1000/60/60; // h단위
var dday = (end-now)/1000/60/60/24; // day단위
alert(Math.floor(dday) + "일 남았습니다");
}
</script>
: Window객체는 자바스크립트 상의 최상위 객체이며 크게 BOM과 DOM으로 나눈다
: window.open("url", "창 이름", "창의 특성")
: 창이름이 같은게 이미 열려있을 경우 새로이 열려지지 않고 이미 열려있는데서 새로고침
: 새로 열릴 창의 너비, 높이, 툴바, 스크롤바, 상태표시줄 등등(브라우저마다 다름)
=> px
width : 창의 너비
height : 창의 높이
=> yes || no
location : 주소창 -> IE적용, opera적용
menubar : 메뉴바 -> IE적용
scrollbars : 스크롤바 -> IE적용
status : 상태표시줄 -> IE적용
toolbar : 도구모음 -> IE적용
resizable : 창 크기 조절 기능 여부
공통 : 주소창 수정 안됨, toolbar 없음, 상태표시줄 없음, 메뉴바없음
크롬 : 스크롤바 있음, resizable 가능
IE : 스크롤바 없음, resizable 불가능
var newWindow = window.open(); // 새로 열린 창의 window객체를 반환
newWindow.alert("안녕");
setTimeout(function(){
newWindow.close();
}, 3000);
: 제시한 일정 간격마다 "매번 함수 실행"
setInterval(function(){
var date = new Date();
var hour = date.getHours();
var min = date.getMinutes();
var sec = date.getSeconds();
area1.innerHTML = hour + " : " + min + " : " + sec;
}, 1000);
}