본문 바로가기

JavaScript Study24

REST 아키텍처, RESTful API란 1. RESTREST (Representational State Transfer)웹 상의 서버와 클라이언트 간 통신을 위한 아키텍처 등장 배경1. 사용자 인터렉션의 증가 (정적 웹 -> 동적 웹)초기에는 정적웹이 대다수였지만 시간이 지나면서 인터렉션으 증가하고 동적웹이 많아졌다.따라서 API 호출의 빈도도 많아졌으며, 이에 따른 아키텍처의 필요성이 높아졌다.2. 데이터 양 증가데이터의 양이 증가하면서 동적으로 데이터베이스에 접근하여 데이터를 사용하게 되면서, 통신을 위한 아키텍처의 필요성이 높아졌다.3. 다양한 기기(스마트폰, 태블릿 등)의 등장스마트폰과 태블릿과 같은 여러 기기들이 등장하면서, 브라우저 웹 뿐 아니라 다양한 기기에서 공통적으로 사용할 수 있는 통신 아키텍처가 필요하였다.4. 개발자 편의.. 2024. 6. 3.
JavaScript - 원시 값과 참조 값, 참조 값의 복사 자바스크립트는 비교적 메모리에 대한 부담이 없던 시기에 만들어졌기 때문에 이전에 만들어진 C/C++ 과는 다른 데이터 구조를 가지고 있다. 예를들어 숫자도 long, int 등으로 나누어 메모리 크기를 달리한 C/C++과 달리 JavaScript에서는 number라는 타입 하나로 통일하였다. 또한 가변적인 크기를 가진 문자열의 크기도 제한하지 않았다. 위와 같은 구조를 가진 자바스크립트에서는 다음과 같이 메모리를 관리한다. 1. 변수가 선언 될 시, 변수에 바로 값을 저장하지 않고 값의 참조 주소를 저장한다. 데이터가 바로 입력될 시, 데이터의 크기만큼의 메모리를 소모하게되며, 반복되는 데이터 중복되기 때문에 역시 효율적으로 관리할 수 없다. 따라서 데이터를 저장하는 메모리 영역을 따로 관리하여, 해당 .. 2024. 2. 21.
JavaScript - #23. Strict Mode Strict Mode는 ES5부터 지원을 시작하였으며, 자바스크립트에서 허용되는 불안정한 문법들을 엄격하게 적용하여 오류를 명시적으로 발생하는 기능을 한다. 1. Strict Mode의 적용 Strict Mode를 적용하기 위해서는 전역의 선두 혹은 함수의 몸체의 선두에 'use strict'; 을 추가한다. 전역 선두에 추가하면 스크립트 전체가 Strict Mode가 적용이된다. 'use strict'; // 전역 엄격모드 function foo(){ x=10; // ReferenceError } foo(); 함수 몸체 선두에 적용하면 해당 함수와 중첩 함수에만 Strict Mode가 적용된다. function foo2(){ y=10; // 변수 y가 전역 변수로 암묵적 선언이 일어남, 오류 x } f.. 2023. 9. 22.
JavaScript - #21. 일급객체 JavaScript - #21. 일급객체 일급객체의 조건은 다음과 같다. 1. 무명의 리터럴로 생성이 가능, 런타임때 생성이 가능하다. 2. 변수나 자료구조에 저장이 가능하다. 3. 함수의 매개변수에 전달할 수 있다. 4. 함수의 반환값으로 사용할 수 있다. 자바스크립트의 함수는 일급객체의 조건을 만족하기 때문에 일급객체이다. 따라서 함수는 객체의 특성을 모두 가지며, 일반객체와 다른 점은 호출가능, 함수 고유의 프로퍼티 소유이다. 함수의 고유 프로퍼티를 살펴보자 function func1 (arg1) { return arg1 * arg1; } console.dir (func1); console.dir를 통해 함수객체의 프로퍼티를 확인할 수 있다. 각 프로퍼티별 Object.getownpropertyDi.. 2023. 9. 18.
JavaScript - #20. 생성자 함수에 의한 객체생성 JavaScript - #20. 생성자 함수에 의한 객체생성 객체의 생성법 중 이번에는 생성자 함수를 통한 객체의 생성에 대해서 알아보겠다. 이전에 배운 방법은 객체 리터럴을 통한 생성이였다. 그렇다면 두 방식은 어떤 차이점이 있으며, 무엇을 사용하는 것이 좋을까? 객체 내부에는 여러 프로퍼티와 매서드가 정의되어있다. 만약 유저의 정보를 담는 객체가 있다고 생각해보자. 그 안에는 유저의 이름, 나이, 사는 곳, 등이 정의되어있다. 유저가 한명일 때는 객체 리터럴을 통해서 충분히 만들 수 있지만, 유저가 몇백명이 넘는다고 가정해보자. 값은 다르겠지만 동일한 키의 프로퍼티, 매서드를 가지는 객체를 리터럴로 계속 선언한다면 효율적이지 못할 것이다. 이렇게 비슷한 객체를 여러개 선언할 때 생성자 함수에 의한 객.. 2023. 9. 13.
JavaScript - #19. 프로퍼티 어트리뷰트 JavaScript - #19. 프로퍼티 어트리뷰트 1. 내부 슬롯과 내부 메서드 프로퍼티 어트리뷰트를 이해하기 위해서는 내부 슬롯과 내부 메서드에 대한 이해가 필요하다. 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위하여 ECMAScript 사양에서 사용하는 의사 프로퍼티와 의사 메서드이다. 내부 슬롯과 내부 메서드는 개발자가 직접 사용하기 위해 구현된 것이 아니기 때문에 원칙적으로는 외부에서 접근할 수 없다. 하지만 일부 내부 슬롯과 내부 메서드에 간접적으로 접근할 수 있는 방법이 있다. 예를들어 [[Prototype]] 이라는 내부 슬롯은 모든 객체가 갖는 내부 슬롯이다. 이 내부슬롯에 접근하기 위해 직접적으로 [[Prototype]]을 사용할 수 는 없지만. .__pro.. 2023. 9. 11.