function 함수(){
console.log(this);
}
함수()
둘다 윈도우나옴
펼쳐보면 자바스크립트 기본함수들을 가지고있는 기본 오브젝트임

'use strict'


자바스크립트를 조금 엄격하게쓸수있음

 x= 200; 이러면 이거 금지시킴
var x = 200; 이래야함


console.log(this);=>window가 나옴


function 함수(){
console.log(this);
}
함수()=>undifined라고뜸
2.

var obj = {
data :'kim'
함수: function(){
console.log('안녕')
}
}
obj.data;
obj.함수();

오브젝트에서 메소드 빼서 쓸때 보통 이렇게 씁니다.



3.기계함수안에서 쓰면 새로 생성되는 오브젝트를 뜻함
오브젝트내의 메소드에서쓰면
그메소드를 가지고있는 메소드

function 기계(){
this.이름 = "kim"
}


4.이벤트 리스너

document.getElementById('버튼').addEventListener('click', function(e){
 console.log(this)=>e.currentTarget
});

이벤트 리스너 안에서 this를 쓰면
this

e.currentTarget;이랑똑같음


var arr=[1,2,3]
arr.forEach((e)=>{
console.log(a)
}
document.getElementById('버튼').addEventListener('click', function(e){
  var 어레이 = [1,2,3];
  어레이.forEach(function(){
    console.log(this)
  });
});


내부 코드가 3번 반복됌

함수안에들어가는 함수를 콜백함수라고함

여기서 console.log(this)를넣으면 뭐나옴?
1번(window)혹은 2(안의 메소드)번뜻이나옴

여기서의 this는
함수가쓰인위치에 따라 this가 변함

//일반함수에서 this는 1번(window)가나옴
엄밀히말하면 전역함수이기때문

오브젝트 내에서 콜백함수를 쓴다면 this는?
this.name

var 오브젝트 = {
  이름들 : ['김', '이', '박'];
  함수 : function(){
      오브젝트.이름들.forEach(() => {
        console.log(this)
      });
  }
}


arrowfunction 특징 this를 변화시키지 않음

복사했습니다!