본문 바로가기

전체 글43

20. 객체와 배열의 부족함을 채워주는 Map과 Set 안녕하세요. 좋아요요정입니다. 오늘은 ES6에 도입된 Map과 Set에 대해 알아보겠습니다. 컬렉션? 컬렉션이란 데이터들의 집합, 데이터를 모아놓은 자료구조의 개념입니다. 자바스크립트에서 컬렉션으로 잘 사용하는 데이터 타입은 객체입니다. 객체는 key와 value를 하나씩 쌍으로 가진 프로퍼티를 끊임없이 추가할 수 있는 컬렉션입니다. Map과 Set은 ES6에서 도입된 새로운 컬렉션입니다. Map은 Map 객체로 키-값 쌍을 보유하는 형태의 자료구조이고, Set객체는 자료형에 관계 없이 원시 값과 객체 참조 모두의 유일한 값을 저장하는 형태의 자료구조입니다. 자바스크립트는 객체로 자료구조가 가능한데 왜 Map과 Set이라는 새로운 자료구조를 도입했을까요? 도입한 이유는 일반 객체로는 해결할 수 없는 문제.. 카테고리 없음 2022. 2. 18.
Lv.1 - 완주하지 못한 선수 (해시) 안녕하세요. 좋아요요정입니다! 스터디에서 자료구조를 시작했습니다 예~~ 🙌 숙제로 프로그래머스를 시작합니다. Lv.1. 완주하지 못한 선수 문제 요약 수많은 마라톤 선수들이 마라톤에 참여. 단 한명의 선수를 제외하고는 완주. 마라톤에 참여한 선수들의 이름이 담긴 배열과 완주한 선수들의 배열이 주어졌을 때 완주하지 못한 단 한명의 선수를 반환하는 함수를 작성. 제한 사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예 participant completion return ["l.. Study-Note/프로그래머스 2022. 2. 17.
19. 클로저. 반환된 함수와 그 함수가 선언됐을 때의 렉시컬 환경과의 조합! 안녕하세요. 좋아요요정입니다. 오늘은 클로져에 대해서 알아보겠습니다. 사실 저는 제가 작성하는 코드에 클로저를 사용하지 않는다고 생각하고 있었습니다. 이름은 알지만 낯설고 사용해보지 않았다고 생각했었는데 글쎄 리액트의 Hooks이.. 클로저의 특성이라고 합니다!(두둔) const [count, setCount] = useState(0); 리액트의 함수형 컴포넌트 훅에서는 usdState()를 통해 state를 선언하고, state와 함께 선언되어지는 setCount라는 함수를 호출해 count의 상태를 관리할 수 있습니다. '클로저를 사용해봤다'라고 생각하니, 클로저가 조금 친숙해지네요. 클로저 클로저는 함수와 함수가 선언된 어휘적 환경의 조합이라고 합니다. "함수가 선언된 어휘적 환경"을 이해하기 위해.. Study-Note/JavaScript 2022. 2. 9.
18. 자바스크립트의 Strict mode 안녕하세요. 좋아요요정입니다. 오늘은 자바스크립트의 strict mode에 대해 알아보겠습니다. Strict mode 자바스크립트는 구현되는 환경에 따라 this가 객체인스턴스, 윈도우, 생성되는 객체, 호출되는 객체 등으로 변경이 되고, var, const let 키워드에 따라 다르게 적용되는 스코프, 그리고 함수 호이스팅, 전역변수의 호이스팅, 심지어 var는 같은 변수명이어도 에러가 나지 않는 모습을 보입니다. 자바스크립트의 이런 특징으로 인해 어디서 오류가 발생했는지 파악까지 오랜 시간이 걸리는 경우도 있습니다. 자바스크립트는 잠재적인 오류가 발생하기 어려운 환경을 제공해주기 위해 자체적으로 strict mode를 제공합니다. strict mode 1. strict mode를 적용하면 기존에 조용.. Study-Note/JavaScript 2022. 2. 4.
17. 자바스크립트의 클래스는 "특별한 함수"이다.(선언부터 상속까지) 안녕하세요. 좋아요요정입니다. 자바스크립트는 ES6에서 클래스 기반 언어들과 비슷하게 객체를 생성하는 "클래스"가 추가되었습니다. 프로토타입 객체지향 프로그래밍의 자바스크립트에서는 기존 생성자함수를 이용해 객체를 생성했었는데 클래스가 추가된 이유는 무엇일까요? 그리고 클래스 사용법이 어떠한지 함께 살펴보겠습니다. 클래스 클래스는 객체를 생성하기 위한 탬플릿입니다. 붕어빵을 찍어내는 틀 = 클래스, 붕어빵 = 객체라는 예시가 유명합니다. 자바스크립트는 프로토타입 기반의 객체지향 패러다임을 제공하는 언어입니다. 클래스가 도입되기 이전의 자바스크립트는 프로토타입을 사용하기 때문에 클래스 키워드가 없이도 생성자함수, prototype을 이용해 객체지향에서 사용하는 상속기능을 구현할 수 있습니다. 자바스크립트의 .. Study-Note/JavaScript 2022. 1. 29.
16. 자기참조 변수, this 이해와 apply, call, bind의 사용, 차이점. 안녕하세요. 좋아요요정입니다! 오늘은 자바스크립트에서 사용되는 자기참조 변수 this를 함께 살펴보겠습니다. 함수의 호출되는 방식에 따른 this와 this 바인딩을 함께 살펴보겠습니다. this 키워드 이미 생성자함수, 객체 메서드, 프로토타입 등을 작성하며 자연스럽게 this를 사용했었습니다. 자기참조 변수 this는 전역에서도 사용할 수 있고, 생성자 함수에서도, 객체 메서드에서도 사용되는키워드 입니다. this는 호출하는 대상이 속한 객체, 생성자 함수로 만들어지는 인스턴스를 가리키거나, 본인이 호출되는 상황에 따라서 다 다르게 해석됩니다. 특히 this가 호출되는 컨텍스트에 따라 연결되는 참조값이 동적으로 결정되어 간혹 잘못된 코드를 작성할 수도 있습니다. this가 어디에서 호출될 때 어떻게.. 카테고리 없음 2022. 1. 22.
15. 프로토타입 3탄 - 프로토타입 교체, 정적 프로퍼티 메서드, instance of [프로토타입 연장되는 내용입니다.] 1. 13. 프로토타입 기반 객체지향 프로그래밍 이해하기 2. 14. 프로토타입 2탄 - 메소드 오버라이딩, 오버로딩, 섀도잉 "프로토타입 교체를 통해 객체간의 상속관계를 동적으로 변경하는 번거로울 뿐만 아니라 안전하지 않기 때문에 추천하지 않습니다. 따라서 직접 상속을 하거나, es6에 도입된 클래스문을 활용해 훨씬 쉽고 직관적인 상속을 구현하는걸 지향합시다." 프로토타입의 교체 생성자함수와 함께 생성되는 .prototype 프로퍼티는 개발자에 의해 임의의 다른 객체로 변경될 수 있습니다. 이러한 특징을 활용해서 객체간의 상속 관계를 동적으로 변경할 수 있습니다. 예시를 보겠습니다. function Person(name) { this.name = name; } Pe.. Study-Note/JavaScript 2022. 1. 20.
14. 프로토타입 2탄 - 메소드 오버라이딩, 오버로딩, 섀도잉 안녕하세요. 좋아요요정입니다! 12. 객체지향 프로그래밍 이해하기, 13.프로토타입 기반 객체지향 프로그래밍 이해에 이어서 객체지향 프로그래밍에서 상속을 구현할 때 중요하게 여기는 요소 중 하나인 메소드 오버라이딩과 오버로딩에 대해 알아보겠습니다. 오버라이딩 부모가 되는 생성자함수, 클래스가 갖고있는 메서드를 자식 생성자함수, 클래스, 객체에서 같은 이름으로 재정의하여 사용하는 방식입니다. 이때 자식 생성자함수, 클래스, 객체에 의해 가려진 부모의 메서드를 섀도잉이라고 합니다. 예시를 보겠습니다. function Person(name) { this.name = name; } Person.prototype.cook = function (menu) { console.log(`${this.name}가 ${me.. Study-Note/JavaScript 2022. 1. 20.
13. 프로토타입 기반 객체지향 프로그래밍 이해하기 안녕하세요. 좋아요요정입니다. 자바스크립트는 프로토타입 기반 객체지향 프로그래밍 언어입니다. 다른 객체지향 언어들과는 다르게 클래스나 상속, 캡슐화를 위한 키워드를 제공하지 않고 자바스크립트는 프로토타입을 활용해 자바스크립트만의 객체지향 패러다임을 제공하고 있습니다. 자바스크립트의 클래스는 ES6가 되어서야 도입이 되었고, 다른 언어(Java, C++ 등)과는 조금 다르게 동작합니다. 자바스크립트의 클래스는 기존 상속을 구현하던 프로토타입을 조금 더 쉽게 사용해주는 하나의 함수, 도우미 역할이라고 볼 수 있습니다. 프로토타입 객체 프로토타입을 활용한 상속이란? 10. 생성자 함수에서 생성자 함수를 통해 객체 인스턴스를 생성하고, 생성자 함수의 prototype에 메서드를 등록함으로써 해당 메서드를 객체 .. Study-Note/JavaScript 2022. 1. 16.