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를 변화시키지 않음