1. 클래스
2) this
- 일반(Normal) 함수는 "호출 위치"에 따라 this 정의
- 화살표(Arrow) 함수는 자신이 선언된 "함수 범위"에서 this 정의
- 화살표 함수는 콜백 함수 내에서 this가 정의되지 않으면, window 전역 객체로 설정
예제1
const orosy = {
name: 'Orosy',
normal: function () {
console.log(this.name)
},
arrow: () => {
console.log(this.name)
}
}
orosy.normal()
orosy.arrow()
예제2
const amy = {
name: 'Amy',
normal: orosy.normal,
arrow: orosy.arrow
}
amy.normal()
amy.arrow()
예제3
function User(name) {
this.name = name
}
User.prototype.normal = function () {
console.log(this.name)
}
User.prototype.arrow = () => {
console.log(this.name)
}
const orosy = new User('Orosy')
orosy.normal()
orosy.arrow()
예제4
const timer = {
name: 'Orosy!',
timeout: function () {
setTimeout(function () {
console.log(this.name)
}, 2000)
}
}
timer.timeout()
const timer = {
name: 'Orosy!',
timeout: function () {
setTimeout(() => {
console.log(this.name)
}, 2000)
}
}
timer.timeout()