객체 지향 프로그래밍 OOP

from0·2020년 12월 9일
0
post-thumbnail

객체 지향 프로그래밍 Object-oriented Programming

  • 프로그래밍 언어는 인간의 언어에 가까워지고 있다.
  • 사람이 세계를 이해하는 방식에 가까운 방법론
    • 무언가를 깊이 알려고 하는 사람은 드물다.
    • 그러나 그 무언가를 사용해야할 때는 많다. i.g. 운전, 스마트폰 등
    • 단순 반복은 귀찮아 → 템플릿화
    • 사용이 가능한 최소한의 정보로 압축. i.g. 탭 → app 실행 → 추상화

앞서 배운 것들

  • 문자열인 '3'을 숫자 3으로 바꾸려면 Number('3')
  • 반대로 숫자 3을 문자열로 바꾸려면 String(3)
  • typeof function === 'function'
  • typeof array === 'object' (* typeof 연산 결과 'object'는 함수가 아닌 객체를 가리킴)
  • 메소드는 주로 배열과 객체에서 사용했다.
    • Array.pop(), Array.push(~), etc.
    • Object.keys : 객체 안 키를 배열의 형태로 보여준다.

객체 지향의 흔적

  • Primitive value 외 모두 Object를 상속받는다.

    let str = '3';
    let num = Number(str);
    
    console.log(num) // 3
    console.log(typeof num) // 'number'
  • (거의) 모든 객체들은 Object의 자손(=instance)

let obj = {};

obj instanceof Object

어떤 객체의 proto 값은 그 객체가 어디로부터 상속 받았는지를 뜻한다.

Javascript에서 prototype은 무엇인가

내 돈이 다 떨어지면 조상이 남긴 유언장을 보자

  • prototype은 상속을 가능하게 하는 객체이다.

    • 어떤 객체의 값을 출력할 때, 순차적으로 안쪽 prototype을 살펴볼 수 있다.
  • 모든 객체는 private property 외에 prototype이라는 객체에 접근 가능한 주소를 가진다.

    • 크롬 개발 도구 콘솔에서 __ proto __ 로 표현된다.
    • 단, 함수는 .prototype으로써 접근한다.
      • 이 prototype 객체에 생성자 함수(constructor)가 생긴다.
        - 이 함수의 인스턴스는 constructor에 있는 속성을 부여받는다.
    • Object.prototype
  • 객체의 property와 method는 . 식별자에 의해 참조된다.

  • Number는 전역 객체의 method다.

  • String도 전역 객체의 method다.

예시1 : 참조값이 자신의 private property에 없으면 prototype안을 살핀다.

function notEmpty() {
	c = 520
}

let quiz = new notEmpty();

console.log(quiz.c) // 520
console.log(quiz.a) // undefined

만약 quiz 변수에 key, value를 넣지 않고 quiz.a가 undefined가 안 뜨게 하려면?

notEmpty.prototype.a = 'I am here';

console.log(quiz.a) // 'I am here'

그렇다면 quiz.b는?

console.log(quiz.b) // undefined

notEmpty.prototype.b = 11;
console.log(quiz.b) // 11

quiz는 b를 private property로 가지고 있지 않기 때문에

proto 안 속성을 참조한다.

예시2

요약: 인스턴스의 proto는 함수의 prototype과 같다.

0개의 댓글