웹 개발/Node.js

42. JavaScript - 객체 - 데이터와 처리 방법을 담는 그릇으로서 객체

코오올라 2020. 12. 27. 20:41

자바스크립트에서의 함수는 값 이기도 하다.

그렇기 때문에 배열과 객체에 담을 수 있다.

값으로서 함수를 배열에 담는 경우는 많지 않다.

대신 객체에 많이 담는다. 그 이유는 이름이 있기 때문에 담아논 함수를 이름으로 꺼내기 때문이다.

객체에 함수를 담는것을 통해서 무엇을 할 수 있는지, 좋아질 수 있는지 알아보려 한다.

 

100000개의 코드 줄이 있고 그 사이에 누군가가 v1의 값을 바꾼다면?

 

v1은 v1이라는 문자가 아닌 egoing이라는 단어가 저장되고

이것은 버그로 이어진다. 

이런 상황에선 객체를 사용해야 한다.

서로 연관된 값들을 하나의 객체안에 정리정돈 해서 넣어둘 수 있다.

 

 

f1이라는 함수 안에서 o객체 안에 있는 v1을 호출해 출력할 수 있다.

 

f1(); 과 f2();를 통해서 함수를 실행할 수 있다.

 

o객체 안에 v1과 v2의 값이 출력된다.

 

만약 1억줄 짜리의 코드이고 어떠한 새로운 사람이 1억줄 짜리 코드 안에서 

f1 이라는 함수를 다시 만들어 넣는다면

이전에 있었던 f1이라는 함수는 삭제된 거나 다름없는 상황이 발생한다.

 

자바스크립트에서는 함수가 값이다 라는 특성을 이용하면 이 함수를 이 함수가 사용하고 있는 데이터들이 그룹핑 되어있는 객체에 멤버로서 추가할 수 있다.

 

o객체 안에 있는 f1과 f2 함수를 실행할것이기 때문에 o.f1( ); ,o.f2( );로 실행시켜 줘야 한다.

 

o라는 하나의 객체 안에 서로 연관된 값들과 그 값을 처리하는 함수들이 그룹핑돼 있다.

 

함수 안에 있는 o.v1는 함수가 속해있는 객체가 어떤 이름의 변수로 할당될것인지를 함수가 o.v1과 같이 알고 있어야 한다.

 

만약 함수의 이름을 p로 바꾸고 p로 호출한다면

 

동작하지 않는다. 객체는 이제 p라는 이름을 가지고 있는데 함수 안에서는 o라는 이름의 객체로 호출하였기 때문이다.

 

함수가 객체 안에서 사용될때 그 함수가 자신이 속해있는 객체를 참조할 수 있는 특수한 어떤 약속을 했다. this이다.

 

객체가 어떠한 이름의 변수를 담기는것과는 상관 없이 언제나 함수 내에서 this를 통해서 그 함수가 속해있는 객체의 객체를 참조할 수 있게 된다.