객체 지향 프로그래밍

기초/JavaScript|2021. 6. 23. 22:12

Object Oriented Programming, OOP

객체 지향 프로그래밍.

 

프로그래밍을 한다 = 데이터 + 데이터를 처리하는 것

데이터를 사용하기 좋게 정리하는 도구 - array, object

javascript에서 처리하는 코드가 많아지면 서로 연관되는 것들을 구분하여 그룹핑하기 위해서 각종 내장함수를 사용한다.

 

함수는 처리해야할 일에 대한 어떠한 정보를 담고 있는 일종의 구문(statement)이자 값이다.

함수를 변수에 넣을 수 있다 = 값이다.

var j = function f1() {
  console.log(1 + 1);
  console.log(1 + 2);
}

var i = if(true){
  console.log(1);
}

var k = while(true){
  console.log(10);
}

function이라는 statement는 다른 statement와는 다르게 값이 될 수 있다.

처리 방법들을 담고 있는 구문이면서 동시에 그것 자체가 값이 될 수 있다.

var j = function f1() {
  console.log(1 + 1);
  console.log(1 + 2);
}
console.log(j);
j();

var a = [j];
a[0]();

→ 배열의 원소로서 함수가 존재할 수 있다.

var o = {
  func: j,
};

o.func();

위처럼 객체의 원소(property)로 함수를 주면 그것도 작동한다!

 

즉, javascript에서 배열과 객체는 모두 서로 연관된 데이터를 담는 그릇인데,

처리방법을 그룹핑하는 함수조차 데이터이기도 하기 때문에

배열과 객체에 담을 수 있다.

 

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

대신 객체에는 많이 담음! 객체에는 이름이 있기 때문에~~담아놓은 함수를 이름으로 꺼내기 좋아서.

// 대충 실용적인 변수
var v1 = "v1";
// 끼어든 대충 긴 코드
v1 = "rouie";
var v2 = "v2";

// 위처럼 하지 말고.. 서로 연관된 값들을 하나의 객체 안에 정리할 수 있다.(폴더처럼)
var o = {
  v1: "v1",
  v2: "v2",
  f1: function(){
    console.log(o.v1);
  },
  f2: function(){
    console.log(o.v2);
  },
};

o.f1();
o.f2();

실제로는 위처럼 코드를 하지는 않는다.

위 코드는... 함수가 속해 있는 객체가 어떤 이름의 변수에 할당될 것인지를 함수가 알고 있어야 한다.

그럼 객체 이름 바꿀 때도 번거롭고.. 불편함.

그래서 함수가 객체 안에서 사용될 때 자신이 속한 객체를 참조할 수 있는 특수한 약속이 필요하다.

→ console.log(o.v1) 이 아니라... console.log(this.v1) 

어떤 이름의 객체에 담겨 있는지와는 상관 없이 언제나 자신이 담겨 있는 객체를 참조할 수 있게 된다.

'기초 > JavaScript' 카테고리의 다른 글

var, const, let  (0) 2021.09.06
호출 스택, 이벤트 루프  (0) 2021.09.02
JavaScript 객체  (0) 2021.06.23

댓글()