최대 1 분 소요

this

  • 일반 함수는 호출 위치에 따라 this 정의
  • 화살표 함수는 자신이 선언된 함수 범위에서 this 정의
const ww = {
  name: 'WW',
  // 일반 함수
  normal: function () {
    console.log(this.name)
  },
  // 화살표 함수
  arrow: () => {
    console.log(this.name)
  }
}

ww.normal()  // WW
ww.arrow()  // Undefined


const kim = {
  name: 'Kim',
  normal: ww.normal,
  arrow: ww.arrow
}

kim.normal()  // Kim
kim.arrow()  // Undefined


function User(name) {
  this.name = name
}
User.prototype.normal = function () {
  console.log(this.name)
}
User.prototype.arrow = () => {
  console.log(this.name)
}

const ww = new User('WW')

ww.normal()  // WW
ww.arrow()  // undefined


  • setTimeout나 setInterval 함수를 사용할 때는 콜백으로 일반함수보다 화살표 함수를 쓰는 것이 활용도가 높음
const timer = {
  name: 'LWW!!',
  timeout: function () {
     setTimeout(function () {
       console.log(this.name)
     }, 2000)
  }
}
timer.timeout()  // 2초 뒤 undefined


const timer = {
  name: 'LWW!!',
  timeout: function () {
     setTimeout(() => {
       console.log(this.name)
     }, 2000)
  }
}
timer.timeout()  // 2초 뒤 LWW!!

댓글남기기