알다시피 파이썬이나 자바스크립트는 동적할당을 따로 하지않는다. 그래서 배열을 바로 사용하기만 하고 따로 생각해보지는 않았다. 그래서 정리하고자 한다. 궁금증 1 자바스크립트 동적할당을 어떻게 할까? 정적 메모리할당 스택은 JavaScript가 정적 데이터를 저장하는 데 사용하는 데이터 구조입니다 . 정적 데이터는 엔진이 컴파일 타임에 크기를 아는 데이터입니다. 엔진은 크기가 변경되지 않는다는 것을 알고 있으므로 각 값에 대해 고정된 양의 메모리를 할당합니다 . 실행 직전에 메모리를 할당하는 과정을 정적 메모리 할당 이라고 합니다 . 엔진은 이러한 값에 대해 고정된 양의 메모리를 할당하기 때문에 기본 값의 크기에 제한이 있습니다 . 동적 메모리할당 힙은 JavaScript가 객체 와 함수를 저장하는 데이터..
분류 전체보기
모던자바스크립트 스터디 13일차이다. 27장 배열 28장 Number 오늘은 위 단원들을 공부하고 모르는것을 정리했다. # 궁금증 희소배열이 연속적인 같은 타입의 요소보다 느리지만 메모리 효율적인 이유가 뭘까? # 이유 js array(배열)은 인덱스 키와 모든 인덱스 속성보다 크다는 불변성을 충족하는 'length'가 있다. # 문제점 희소 배열을 정의하는 것이 허용되지 않더라도 정의되지 않은 요소를 배열에 넣을 수 있으므로 기본적으로 희소 배열에서 볼 수 있는 것과 동일한 사용성 문제가 발생하게 된다. # 예시 [0,undefined,...,undefined,1,undefined] 처럼 데이터를 넣으면 # 결과 [0,...,1,] 하면 더 많은 메모리를 소비하는 배열과 느린 반복을 얻을 수 있다. 희..
모던자바스크립트 스터디 12일차이다. 26장 ES6 함수의 추가기능 오늘은 위 단원을 공부하고 모르는것을 정리했다. # 궁금증 일반함수, 메서드, 화살표함수의 차이 정리 # 일반 함수 constructor: 주로 생성자 함수에서 객체를 초기화하는 데 사용 prototype: 객체 생성 시 메서드나 속성을 공유하기 위한 프로토타입 객체를 정의하는데 사용 super: 일반 함수는 사용 못함 arguments: 함수에 전달된 인자들의 리스트를 나타내는 객체 this: 함수가 호출될 때, 호출한 객체를 나타내는 키워드 # constructor function Person(name, age) { this.name = name; // constructor this.age = age; } const john = ne..
모던자바스크립트 스터디 11일차이다. 25장 클래스 오늘은 위 단원을 공부하고 모르는것을 정리했다. # 궁금증 프로토타입 체인보다 클래스 상속 기능을 선호하고 많이 쓰이게된 이유가 뭘까? # 이유 class 상속을 사용하지 않고 의사 클래스 상속(pseudo classical inheritance) 패턴을 사용해서 클래스 흉내를 내는 것에 불과함. object.create보다 new 쓰면 장점 1. 코드가 현저히 적어진다. 2. 유지관리가 편해진다. 3. private properties && method 4. 생성자에 매개변수 전달 가능 어차피 생성자를 통해 인스턴스를 생성할거면 더 장점이 많은 class로 관리하는 것이 편하기 때문 이는 class에서 쓰던걸 함수에서 쓰려니까 많은 불편함과 에러 또는..
모던자바스크립트 스터디 10일차이다. 23장 실행 컨텍스트 24장 클로저 오늘은 위 단원들을 공부하고 모르는것을 정리했다. # 궁금증 왜 자바스크립트는 private, protected 같은 접근 제한자를 공식적으로 지원하지 않는것인가? # 이유 JavaScript는 프로토타입 기반 프로그래밍 언어(아마도 프로토타입 기반 스크립팅 언어가 더 정확한 정의일 것) 프로토 타입 기반 프로그래밍 언어는 클래스가 없는 객체 지향 프로그래밍(js는 ECMA 262 Edition 4 이후 class 지원) 객체지향 언어는 분류와 관계에 초점을 맞추도록 권장하지만, 프로토타입 기반 언어는 동작에 먼저 초점을 맞추고 나중에 분류 객체 프로그래밍 언어는 객체, 메서드, 속성, 클래스, 캡슐화, 집계, 상속 및 다형성이 있..
모던자바스크립트 스터디 9일차이다. 21장 빌트인 객체 22장 this 오늘은 위 단원들을 공부하고 모르는것을 정리했다. # 궁금증1 url에서 예약문자중 +기호는 스페이스(공백; space)으로 치환되는 것일까? 그럼 이것을 어떻게 구별해야할까? # 이유 서버에서 맘대로 + 기호를 모두 공백(space)으로 치환해버려서 공백의 인코딩 값은 %20과 + 기호의 인코딩 값인 %2B 가 같게 보이는 현상이다. 이와 관련되서 전에 했던 Python 블로깅이 있다. 해결방법은 퍼센트 인코딩을 사용하면 되고 블로깅을 참고하면 된다! # 궁금증2 왜 브라우저 환경과 Node.js 환경이 다른걸까? # 이유 브라우저는 엄격한 보안 정책과 제한을 받는데, Node.js는 그렇지 않다는 점이다. -> Node.js는 결..
모던자바스크립트 스터디 8일차이다. 19장 프로토타입 20장 strict mode 오늘은 위 단원들을 공부하고 모르는것을 정리했다. # 궁금증1 strict mode는 자바스크립트 언어의 문법을 더 엄격히 지원하여 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진 최적화 작업에 문제를 일으킬 수 있는 것을 방지하기 때문에 쓰는 것이 좋다고 한다. 그럼 strict mode를 안쓰는 것이 좋은 상황은 언제일까? # 답변 엄격 모드를 부분적으로만 지원하거나 전혀 지원하지 않는(예: Internet Explorer 버전 10 이하 등) 수많은 브라우저 버전이 여전히 사용되고 있으므로 오류를 일으킬 수 있음 향후 ECMAScript의 버전에서 정의가 바뀔 가능성이 있는 일부 구문 엄격 모드 코드는 때때로 엄격 ..
모던자바스크립트 스터디 7일차이다. 17장 생성자 함수에 의한 객체 생성 18장 함수와 일급 객체 오늘은 위 단원들을 공부하고 모르는것을 정리했다. 궁금증 '모던자바스크립트 17장 235page'를 보면 Object 생성자 함수를 사용해 객체를 생성하는 방식은 특별한 이유가 없다면 유용해보이지 않다는 설명이 적혀있을까? 이유 객체리터럴 방식으로 객체 생성을 한다면 👉🏻 모든 객체를 보여주는 Object객체와 연결된다. 생성자 함수로 객체 생성을 한다면 👉🏻 자신을 만든 생성자 객체만 연결된다. 객체 리터럴 생성자 함수 간편성 - 필요한 속성과 값을 중괄호에 나열하면 되서 간단하고 직관적 - 함수를 정의하고 객체 생성하는 과정이 객체 리터럴보다 복잡함 확장성 - 객체 리터럴은 한 번에 하나의 객체만 생성 ..