JAVASCRIPT 25 Object Method

 함수 또한 그저 값이다!

this 는 method가 선언된 객체와 같다.

배열도 객체다

자바스크립트 에서는 함수도 그저 value 이다. 따라서 객체의 특성, 키 로써도 이용가능하다.

const jonas1 = {
    birthYear: 2001,
    calcYear: function (birthYear) {
        return 2020 - birthYear;
    }

다음과 같이 객체 안에서 함수를 정의 할 수 있다. 이는 앞서 말했듯 함수 또한 결국 값이기 때문이다.

const jonas1 = {
    birthYear: 2001,
    calcYear: function () {
        return 2020 - this.birthYear;
}}

다음 함수를 보자. 위 함수와 비슷한 역할을 하지만 함수의 매개 변수가 빠져 있다.

이는 this 때문이다. 우선 method는 자바스크립트에서 객체 안에서 선언된 함수를 뜻하는데

이때 this 는 method 가 선언된 객체와 같은 역할을 한다.

따라서 this.birthYear 은 다시 말하자면 calcYear은 jonas1 이란 객체에서 선언된 method이고 결국 jonas1.birthYear 과 같다. 굳이 this를 쓰는 이유는 여기선 만약 jonas1 이란 객체명이 변경 되면 그 아래 있는 모든 jonas1 을 바꿔야 되기 때문이다. 

const jonas1 = {
    birthYear: 2001,
    calcYear: function () {
        this.age = 2020 - this.birthYear;
        return this.age
    }
}

다음도 같은 역할을 하지만 이는 매쏘드를 여러번 호출 할때 매우 유리하다. 

console.log(jonas1.calcYear());
console.log(jonas1.age);
console.log(jonas1.age);
console.log(jonas1.age);

이제 calcYear을 알고 싶다면 맨 처음만 계산한 후 그저 jonas1.age 를 하게 되면 매번 계산할 필요 없이 바로 사용 할 수 있기 때문이다.


앞서 배웠던 배열의 매쏘드를 생각해보자 분명 매쏘드란 객체에서 정의 된 함수를 뜻하지 않았는가 여기서 배열은 객체의 한 종류임을 알 수 있다.


















댓글

이 블로그의 인기 게시물

Javascript this keyward

Javascript Object vs Primitives (Primitives vs reference type)

javascript 15 switch statement