본문 바로가기
학습정리/자습

poiemaweb 18~19강 복습

by sunnykim91 2019. 9. 30.

프로토타입

자바스크립트는 객체 기반의 프로그래밍 언어 이며, 자바스크립트를 이루고 있는 거의 모든 것이 객체이다.

 

객체 지향 프로그래밍

여러개의 독립적 단뒤, 즉 객체 들의 집합으로 표현하려는 프로그래밍 패러다임 

다양한 속성 중에서 프로그램에 필요한 속성만을 간추려 내어 표현하는 것을 추상화 라고 한다.

 

객체지향 프로그래밍은 객체의 상태를 나타내는 데이터와 상태 데이터를 조작할 수 있는 동작을 하나의 논리적인 단위로 묶어 생각한다. 

상태 데이터와 동작을 하나의 논리적인 단위로 묶은 복합적인 자료 구조를 객체라 한다.

객체의 상태 데이터를 프로퍼티 / 동작을 메소드 라고 한다.

 

상속은 어떤 객체의 프로퍼티 또는 메소드를 다른 객체가 상속받아 그대로 사용할 수 있게 하는것

 

프로토타입 객체 : 객체간 상속을 구현하기 위해서 사용된다.

 

모든 객체는 [[prototype]] 이라는 내부슬롯을 갖는다. 

객체들이 생성될때 [[prototype]] 내부 슬롯의 값으로 프로토타입의 참조를 저장한다. 즉, 모든 객체는 하나의 프로토타입을 갖으며 프로토타입은 객체의 생성방식에 의해 결정된다.

모든 객체는 하나의 프로토타입을 갖는다

__proto__ 접근자 프로퍼티를 통해 자신의 프로토타입, 즉 자신의 [[prototype]] 내부 슬롯이 가르키는 객체에 접근 가능

__proto__ 접근자 프로퍼티는 상속을 통해 사용된다.

프로토타입 체인의 최상위 객체는 Object.prototype이며 이 객체는 모든 객체에게 상속

__proto__ 접근자 프로퍼티를 통해 프로토타입에 접근하는 이유

프로토타입에 접근하기 위해 접근자 프로퍼티를 사용하는 이유는 상호 참조에 의해 프로토타입 체인이 생성되는 것을 방지하기 위함

 

prototype프로퍼티

함수 객체의 prototype 프로퍼티는 생성자 함수가 생성할 인스턴스의 프로토타입을 가리킨다.

함수 객체만 소유 ! 일반 객체에는 없음!

non-constructor 는 프로토 타입이 생성되지 않음

(화살표함수도 non-constructor, 메소드 축약표현으로 정의한 메소드도 non-constructor)

 

모든 프로토타입은 constructor 프로퍼티를 갖는다. 이 constructor 프로퍼티는 prototype 프로퍼티로 자신을 참조하고 있는 생성자 함수를 가리킨다. 이 연결은 생성자 함수가 생성될 때, 즉 함수 객체가 생성될 때 이루어진다.

 

**Object 생성자 함수는 new 연산자와 함께 호출하지 않아도 new 연산자와 함께 호출한 것과 동일하게 동작한다.

 

캡슐화 : 정보의 일부를 외부에 감추어 은닉하는것

외부에 공개할 필요가 없는 구현의 일부를 외부에 노출되지 않도록 감추어 적절치 못한 접근으로부터 정보를 보호하고 객체간의 상호 의존성, 즉 결합도를 낮추는 효과가 얻는다.

 

하위 객체를 통해 프로토타입에 get 액세스는 허용되나 set 액세스는 허용되지 않는다.

 

정적(static) 프로퍼티/메소드는 생성자 함수로 인스턴스를 생성하지 않아도 참조/호출할 수 있는 프로퍼티/메소드

 

 

 

엄격 모드

ESLint 린트 도구는 정적 분석 기능을 통해 소스 코드를 실행하기 전에 소스 코드를 스캔하여 문법적 오류나 잠재적 오류를 찾아내고 오류의 이유를 리포팅 해주는 유용한 도구이다.

 

함수 몸체의 선두에 'use strict';를 추가하면 엄격모드를 사용할 수 있다.

 

스크립트 단위로만 동작한다.

 

선언하지 않은 변수를 참조하면 ref 에러

delete 연산자로는 변수 함수 매개변수를 삭제하면 syntax에러

중복된 함수 매개변수 이름을 사용하면 syntax에러

with문을 사용하면 syntax에러

 

strict mode에서 함수를 일반 함수로 호출하면 this에 undefined가 바인딩 된다.

인자값을 재할당하여 변경해도 인자값 객체에 반영되지 않는다.

 

 

반응형

'학습정리 > 자습' 카테고리의 다른 글

poiemaweb 20~21강 복습  (0) 2019.10.01
리액트 46~50강 정리  (0) 2019.10.01
리액트 41~45강 정리  (0) 2019.09.30
poiemaweb 16~17강 복습  (0) 2019.09.23
리액트 36~40강 정리  (0) 2019.09.22