document.querySelector().onclick=함수 호출();
전화는 하던일을 멈추고 받아야함 요청에 대한 결과 동시에 일어남( blocking ,synchronous)
문자는 확인 후 나중에 답장가능 ,요청에 대한 결과 동시에 일어나지 않음(non-blocking,asynchronous)
응답을 주는 것은 -> 이벤트( 준비가 되었을 때(트리거가 되었을 때))-> 콜백
응답을 주기 위해 이벤트가 준비되었는지 체크하고 해당 이벤트 발생시 콜백 메소드를 호출하는 과정을 비동기적이라고 한다
1,2 번 모두 this는 window 를 가리킨다
var name='Global Variable';
console.log(this.name); //'Global Variable'
function foo(){
console.log(this.name);//'Global Variable'
}
//this -> window
foo();
var name ='Global Variable';
function outer(){
function inner(){
console.log(this.name);//'Global Variable'
}
inner();
}
//this -> window
outter();
var counter={
val: 0,
increment:function(){
this.val+=1;
}
};
counter.increment();
console.log(counter.val);// -> 1
counter['increment']();
console.log(counter.val)// -> 2
var obj={
fn: function (a,b) {
return this;
}
};
var obj2={
method :obj.fn
};
console.log(obj2.method===obj2);
console.log(obj.fn()===obj);
실행되는 시점에서 this가 obj2가 되기때문에 첫번째 값이 true가 나온다 호출하는 부모가 누군인지가 중요하다.
생성자 내부에서 호출하는 this는 인스턴스의 속성을 나타낸다
function F(v) {
this.val=v;
}
var f=new F('hello!');
var add=function (x,y) {
this.val=x+y;
}
var obj={
val: 0
};
add.apply(obj,[2,8]);
console.log(obj.val);//10
add.call(obj,2,8);
console.log(obj.val);//10
매개변수로 넘겨줄때 call은 ,를 이용하여 구분하고 apply는 배열을 이용하여 넘겨준다
this 는 첫번째 인자로 넘겨주는 객체를 가리킨다