Window 객체 : 전역 객체 (window 변수를 생략하고 사용이 가능하다 ★)
웹브라우저 창 자체를 의미
Screen 객체 : 창의 크기 정보 ( width/height )
History 객체 : 웹 페이지의 뒤로/앞으로 기능
Location 객체 : 웹 브라우저의 URL 정보
Navigator 객체 : 웹 브라우저 자체 정보
웹 브라우저를 open하면 자동으로 객체생성이 된다
개발자는 명시적 생성없이 참조해서 사용할 수 있음
어떤 변수명으로 되어 있을까?
Window 객체 참조 : window 변수를 사용한다
Screen 객체 참조 : screen 변수를 사용한다
History 객체 참조 : history 변수를 사용한다
Location 객체 참조 : location 변수를 사용한다
Navigator 객체 참조 : navigator 변수를 사용한다
window.open("child.html", 옵션);
var childWin = open("child.html"); // 동일
// 현재 창 닫기
window.close();
// 부모창 닫기
opener.close();
// 자식창 닫기
childWin.close();
confirm("진짜 삭제할거임?")
propmt("이름을 입력하세요");
{key:value, key1:value1,...}
{ username:username } ==> {username}
setUsername:function(n){this.username=n}
==> setUsername(n){this.username=n}
set setUsername(n){this.username=n}
get getUsername(){return this.username;}
예>
var xxx = "username";
{[xxx]:"홍길동" }; ==> {"username":"홍길동"}
// 이용해서 연결해서 사용가능
{[xxx+"01"]:"홍길동" }; ==> {"username01":"홍길동"}
// 중첩가능
"{key:value}" --------> {key:value}
"[10,20]" --------> [10,20]
JSON.parse("{key:value}");
{key:value} ----> "{key:value}"
[10,20] ----> "[10,20]"
JSON.stringify({key:value})
"10" --------> 10
Number.parseInt("10");
10 ----------->"10"
String(10)
function 함수명([파라미터,..]){
문장;
[return 값;]
}
-> js 실행할 때 만들어짐
var 변수 = function ([파라미터,..]){
문장;
[return 값;]
};
변수가 함수명으로 사용됨!!
-> 해당 코드가 실행될 때 만들어짐
반드시 호출해야 된다 (함수명 이용)
호출 후 반드시 호출한 곳으로 돌아온다
호출할 때 인자값을 설정할 수 있고 돌아올 때 리턴값이 존재할 수 있다
JS 함수는 함수 호출 시 인자값의 개수가 달라도 된다 ★
파라미터 개수 > 인자값 개수
인자값이 저장되고 남은 파라미터에 undefined가 저장되는데 이를 막기 위해 임의의 초기값을 설정할 수 있다
=> default 파라미터
=> function fun(n=초기값, n2=초기값){}
파라미터 개수 < 인자값 개수인 경우
파라미터에 저장하고 남은 인자값은 소실됨. 나머지 인자값을 배열로 가져올 수 있따
=> rest 파라미터 (파라미터 가장 마지막에만 사용된다)
=> function fun(n,...n2){}
function fun(n,n2,...n3){}
fun(10,20,30);
함수 호출시 spread 연산자 이용한 방식으로 인자값을 전달할 수 있다
예>
function fun(n,n2){}
var x = [10,20];
fun(x[0],x[1]); // 기본
fun(...x); // spread
기본형 데이터와 참조형 데이터 인자값 사용
기능에 따라 4가지 형태
JS함수는 일급객체(first-class) 이다
일급객체의 핵심 개념은 함수를 데이터로 처리하는 것
함수를 이용해서 할 수 있는 작업은 다음과 같다
함수를 변수에 저장할 수 있다
함수 호출시 인자값으로 함수를 사용할 수 있다
예> arr.forEach(인자값);
personList.forEach(function(data,idx){});
함수 호출 후 리턴값으로 함수를 사용할 수 있다
예>
var x = function(){};
function fun(){
// return 값;
return x;
}
Button btnOk= new Button("OK");
// 사용자호출 : addActionListener()
// 시스템호출 : actionPerformed()
btnOk.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
}
});
(자바의 lambda와 비슷 -> : thin arrow)
function* fun() {
console.log("1");
console.log("2");
console.log("3");
}
function fun() {
console.log("1");
console.log("2");
if(true) return;
console.log("3");
}
fun();
function* fun(){
console.log("1");
yield
console.log("2");
yield
console.log("3");
}
var gen = fun();
gen.next(); // 1
gen.return(); // 중단
: 함수를 정의하면서 실행한다
(funciton(){
console.log();
})();
인라인 방식
: html 시작 태그에서 연결
: 시작 태그에서 on 이벤트타입으로 된 속성 이용
예> 버튼
: html과 JS가 분리가 안 된 방식으로 권장 X
고전 방식
: html과 JS 분리해서 이벤트 처리가 됨
: JS에서 이벤트 소스를 얻고 on 이벤트 타입을 지정한다
JS 이벤트소스.onclick = function(){};
html
: 이벤트 소스 얻는 방법 (button)
document.메서드() 이용
예> 요소 하나 반환
var result = document.getElementById("x");
var result = document.querySelector("css 선택자문법");
요소 여러 개 반환
var result = document.querySelectorAll("css 선택자문법");
(css 선택자문법 : #id, .class, 태그명, [속성명], 부모 > 자식)
: JS에서 이벤트 소스를 얻고 addEventListener() 메서드로 이벤트 처리함
html
: OK
=> 이벤트 전파 방지 가능 (이벤트 객체 이용)
function fun(){
console.log(event);
}