공부/javascript

[ javascript ] 객체안에 함수 넣기

신입개발자 2021. 6. 10. 17:17

const dog = {
  name: '멍멍이',
  sound: '멍멍!',
  // say 라는 함수 입니다 함수를 다르게 표현할수도 있습니다
  say: function say(){
    console.log(this.sound);
  }
  // function 뒤에 함수 이름을 지울수도 있고
  say: function(){
    console.log(this.sound);
  }
  // function 이라는 키워드를 지울수도 있습니다
  say(){
    console.log(this.sound);
  }
  // 화살표 함수로 표현이 가능하지만 this를 사용하지 못합니다
  say: () => {
    console.log(this.sound);
  }
}

함수 내부에 this는 함수가 위치한 객체 자기 자신(dog)을 가리킵니다

하지만 화살표 함수는 this를 사용하지 못합니다 화살표 함수를 쓰면 this는 자신이 속한 객체를 가리키지 못합니다

const dog = {
  name: '멍멍이',
  sound: '멍멍!',
  say: function(){
    console.log(this.sound);
  },
};

const cat ={
  name: '야옹이',
  sound: '야옹~',
};

cat.say = dog.say;

dog.say();// 멍멍!
cat.say();// 야옹~

 cat.say 에 dog.say함수를 추가했고  cat.say의 this는 cat객체의 sound를 가리킵니다

const Catsay = cat.say; // Error

객체 내부의 함수를 밖으로 꺼내면 this의 관계가 사라진다고 합니다