본문 바로가기
728x90

JS5

함수형 프로그래밍 JS에서 객체지향 패러다임을 사용하기는 쉽지 않다. JS는 프로토타입 기반 객체지향을 사용하고 this 역시 자바 같은 언어에서의 this와는 다르기 때문이다. 따라서 객체지향 대신 함수형을 사용한다면 프로젝트의 유지보수가 조금은 더 쉬워지고, 디버깅도 쉬워진다. 함수형 프로그래밍은 모든 것을 함수로 표현한다. 따라서 함수형 프로그래밍에서는 함수의 역할(입력을 받아 아웃풋을 내보내는 것)을 고려하면 된다. 명령형 프로그래밍과는 다르게 동작을 위해 동작의 구현 과정까지 세세히 생각하지 않아도 된다. 즉, 함수형 프로그래밍은 어떤 동작을 수행하기 위해 동작 과정을 세세히 명령하는 것이 아닌, "어떤 동작을 하겠다!" 라고 선언해야 한다. 다음 예제를 보자. 1 2 3 const name = "yunki"; .. 2022. 3. 26.
함수와 클로저 함수를 절차를 정리할 목적으로 사용하지만 단순히 그 뿐만 아니라 함수 자체를 연산의 대상으로 삼는 것과 클로저를 이해해야 함수형 프로그래밍을 이해할 수 있다. 함수 선언문과 함수 리터럴 식 함수 선언문과 함수 리터럴 식에서 함수를 선언할 수 있다. 함수 선언문에서 선언한 함수는 함수 언선부가 나오기 전에 호출할 수도 있다(함수 선언문의 역행). 함수 호출 정리 함수 호출의 차이를 토대로 함수의 분류를 다음과 같이 나눌 수 있다. 이는 함수 자체로 분류를 한것이 아니다. 따라서 특정 함수를 메서드 또는 생성자라 부르는 것은 엄밀히 말하면 잘못된 표현이다. 정확히 말하자면 그 함수를 메서드 또는 생성자로서 호출했는지 여부이기 때문이다. 즉, 함수, 메서드, 생성자는 호출 방법의 차이에 불과하다. 명칭 설명 .. 2021. 10. 1.
JavaScript에서의 객체 js의 객체를 형식적으로 정의 하면 프로퍼티의 집합이다. 프로퍼티는 name: value쌍으로 나타내어진다. 프로퍼티의 값에는 어떤 타입이라도 정의가 가능하다. 객체지향 프로그래밍의 흐름은 특징의 공통성(타입)보다는 인스턴스 간의 협조에 초점을 맞춘다. 즉, 메시지를 주고받는 객체이다. 메시지를 받는 객체는 전달된 메시지에 반응한다. 메시지를 구현 차원으로 떨어뜨리면 메서드 호출로, 메시지에 대한 반응은 메서드 안에서 처리를 나누게 된다. js에서의 객체지향에서는 객체간의 협조(메시지 전달)는 프로퍼티 접근이다. 객체간의 공통성은 같은 객체에서 성질을 계승하는 형태로 구현된다. js에서는 이를 프로토타입 기반으로 구현한다. 객체 리터럴 Js에서 객체 리터럴은 객체를 생성하는 한가지 방법이다. 객체 리터럴.. 2021. 8. 21.
JS에서 객체를 비교하는 방법 JS에서 primitive값에 대한 비교는 단순히 '==' 또는 '==='를 사용하면 된다. 하지만 객체의 경우, 객체는 여러 데이터로 구조화된 형태 이기 떄문에 객체의 비교는 방법이 다양하고 해당 방법들은 각기 다른 결과를 출력한다. Referential equality JS는 다음과 같은 3가지 방식으로 값을 비교할 수 있다. 1. === 2. == 3. Object.is() 위 3개의 연산자는 모두 비교의 대상이 되는 값이 같은 인스턴스를 참조할때 참을 반환한다. 그때문에 Referential equality는 객체 레퍼런스를 비교할때 유용하다. 하지만 통상적인 상황에서는 레퍼런스가 아닌 실제 값을 비교해야 하는 상황이 더 많다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 co.. 2021. 7. 24.
728x90