오늘은 this, 콜백함수에 대해 배웠다. this가 이렇게 어려운 개념이었구나..! 콜백함수는 알고리즘 문제를 몇번 풀면서 map, filter, reduce등의 함수를 쓸때 검색해본 적이 있어서 this만큼 어렵지는 않았다. 그리고 여전히 나를 힘들게 하는 lexical environment, 오늘 드디어 대충이라도 이해를 했다. 와.. 실행컨텍스트 이해 대충 하고 넘어왔더니 오늘 더 힘들어 졌다. 내일 동기/비동기에 대해 배우는데, 동기/비동기 관련해서는 ajax를 배울때 몇번 검색했던 것 같은데.. 드디어 제대로 배우겠구나..!! 기대가 된다.
확실하게 이해가 되지않은건 정말 자주보고 눈에 익혀야겠다. 한번 그냥 지나치니까 나중에 너무 힘들어진다..^^..
전역 객체란 무엇을 의미하는 것 일까요?
- 자바스크립트는 최상위에 1개의 전역객체를 가진다. 전역객체는 전체 코드에서 단 1개만 존재할 수 있으며, new 연산자를 이용하는 등의 방법으로 새롭게 만들 수 없다. 전역객체의 이름은 자바스크립트를 사용하는 환경에 따라 달라질 수 있다.
- 브라우저 환경: window
//예제 1
var a = 1;
window.b = 2;
console.log(a, window.a, this.a) // 1 1 1
console.log(b, window.b, this.b) // 2 2 2
//예제 2, 동일하게 작동한다.
location.href = 'https://www.naver.com/';
window.location.href = 'https://www.naver.com/';
함수와 메서드의 차이에 대해서 조금 더 알게된게 있을까요? 지난번에 했던 답과는 어떻게 다를까요?
함수와 메서드의 차이는 독립성에 있다.
함수: 그 자체로 독립적인 기능을 수행
메서드: 호출한 대상 객체에 관한 동작을 수행
어떤 함수를 객체의 프로퍼티에 할당한다고 해서 그 자체로서 무조건 메서드가 되는 것이 아니라 객체의 메서드로서 호출할 경우에만 메서드로 동작하고, 그렇지 않으면 함수로 동작한다.
함수로서의 호출과 메서드로서의 호출은 .
,[]
여부로 구분한다: 객체.함수명()
혹은 객체['함수명']()
let obj ={
test: function(){
console.log('test() 메서드 호출');
}
}
function test2(){
console.log('test2() 함수 호출');
}
obj.test(); //메서드
obj['test'](); //메서드
test2(); //함수