개발언어
-
JavaScript - 프로토타입개발언어/JavaScript 2022. 12. 23. 16:21
프로토타입(protorype) 프로토타입은 원래 형태 쪼는 전형적인 예, 기초 또는 표준이다. 프로토타입 기반 언어 JavaScript는 프로토타입 기반 언어이다. 프로토 타입 기반 언어는 클래스 기반 언어에서 상속을 사용하는 것과 다르게, 객체를 원형(프로토타입)으로 하는 복제 과정을 통해 객체의 동작방식을 재사용 할 수 있게 한다. 그렇다면 JavaScript도 복제를 할까? 자바스크립트는 약간 다를다 복제가 아니라 프로토타입 링크를 통해 원형을 참조한다. 자바스크립트 객체의 프로토타입 링크 프로토타입 링크를 설명하려면, 우선 JavaScript의 객체에 대해 먼저 알아야한다. JavaScript에서 단순 원시 타입(simple primitive)인 문자열,숫자,불리언,null,undefined를 제..
-
JavaScript - 함수 바인딩개발언어/JavaScript 2022. 12. 23. 14:39
함수 바인딩 setTimeout에 메서드를 전달할 때 처럼, 객체 메서드를 콜백으로 전달할 때 'this 정보가 사라지는' 문제가 생긴다. 사라진 'this' 객체 메서드가 객체 내부가 아닌 다른 곳에 전달되어 호출되면 this가 사라진다. setTimeout을 사용한 아래 예시에서 this가 어떻게 사라지는지 살펴보자 let user = { firstName: "John", sayHi() { alert(`Hello,${this.firstName}!`); }, }; setTimeout(user.sayHi, 1000); // Hello, undefined! this.firstName은 "John"이 되어야 하는데, alert창엔 undefined가 출력된다. 이런 현상이 나타나는 이유는 setTimeout..
-
JavaScript - 메서드와 this개발언어/JavaScript 2022. 12. 22. 17:25
메서드와 this 자바스크립트에선 객체의 프로퍼티에 함수를 할당해 객체에게 행동할 수 있는 능력을 부여한다. 메서드 만들기 let user = { name: "John", age:30 }; user.sayHi = function(){ alert("안녕하세요!"); } user.sayHi(); //안녕하세요! 메서드는 아래와 같이 이미 저의된 함수를 이용해서 만들수도 있다. let user = { //... } //함수선언 function sayHi(){ alert("안녕하세요"); }; // 선언된 함수를 메서드로 등록 user.sayHi = sayHi; user.sayHi(); //안녕하세요 메서드 단축 구문 객체 리터럴 안에 메서드를 선언할 때 사용할 수 있는 단축 문법 //아래 두 객체는 동일하게 ..
-
JavaScript - 객체개발언어/JavaScript 2022. 12. 22. 14:15
JavaScript 객체를 만드는 방법 let user = new Object(); // '객체 생성자 '문법 let user = {}; //'객체 리터럴 문법' 중괄호{...}를 이용해서 객체를 선언하는 것을 객체 리터럴(object literal)이라고 부른다. 객체를 선언할 때 주로 이방법을 사용한다. 리터럴과 프로퍼티 delete 연산자 delete 연산자를 사용하면 프로퍼티를 삭제할 수 있다. delete user.age; 여러 단어를 조합해 프로퍼티 이름을 만든 경우엔 프로퍼티 이름에 따옴표로 묶어 주어야 한다. let user = { name:"John", age: 30, "likes birds": true //복수의 단어는 따옴표로 묶어야 한다. }; 상수 객체는 수정될 수 있다. cons..
-
NodeJs 호출 스택,이벤트 루프개발언어/Node.js 2022. 12. 13. 10:03
1. 호출 스택 ⭐️호출 스택은 Execution Context(실행 컨텍스트)와 밀접한 연관이 있다. function first(){ second(); cosole.log('첫 번째'); } function second(){ third(); cosole.log('두 번째'); } function third(){ cosole.log('세 번째'); } first(); 함수를 선언했다는 것은 해당 함수를 메모리에 올렸다는 것이다. 메모리는 임시 저장장치이다. 컴퓨터가 잠깐 기억하고 있다가 새로 고침하면 저장이 사라진다. 마지막에 first();로 first()함수를 호출하고, 메모리속에 해당 함수가 선언이 되었는지 찾아본다. 호출하는 것은 실제로 실행하는 것이다. first()함수는 첫 줄에서 바로 sec..
-
NodeJs 블로킹과 논블로킹 I/O개발언어/Node.js 2022. 12. 12. 18:29
논블로킹이라서 순서대로 실행되지 않는다고 해도 그 순서가 램덤이 되는 것이 아니라 나름 대로의 규칙을 가진다. (프로그램 실행 순서에 랜덤은 존재하지 않는다.)-> 순서대로 실행되지 않는 것의 규칙을 Event Loop라고 한다. 논 블로킹 오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되고, 나중에 오래걸리는 함수를 실행 논 블로킹 방식하에서 일부 코드는 백그라운드에서 병렬로 실행된다. 일부 코드: I/O작업(파일 시스템 접근, 네트워크 요청),압축, 암호화 등 나머지 코드는 블로킹 방식으로 실행된다. I/O작업이 많으 때 노드 활용성이 극대화 된다. 블로킹 블로킹(동기)코드가 순서대로 실행되는 것은 -> Execution Context(실행 컨텍스트) 실행 컨텍스트 안에 this와 sc..
-
NodeJs 서버로서의 노드개발언어/Node.js 2022. 12. 12. 18:14
대부분의 서비스가 서버 - 클라이언트 이중 구조로 되어 있다. 서버 네트워크를 통해 클라이언트에 정보 혹은 서비스를 제공하는 컴퓨터 또는 프로그램 클라이언트 서버에 요청을 보내는 주체 (브라우저,데스크탑 프로그램,모바일 앱, 다른 서버에 요청을 보내는 서버) ⭐️노드는 서버가 아니지만, 서버를 구성할 수 있게 하는 모듈이다. 노드 서버의 장단점 장점 단점 멀티 스레드 방식에 비애 컴퓨터 자원을 적게 사용함. 싱글 스레드서 CPU 코어를 하나만 사용함. I/O 작업이 많은 서버로 적합 CPU (주방장,점원)작업이 많은 서버로는 부적합 ex)이미지 리사이징,암호화,알고리즘 문제 풀이 멀티 스레드 방식보다 쉬움 하나뿐인 스레드가 멈추지 않도록 관리해야 한다. 웹 서버가 내장되어있다. 서버 규모가 커졌을 때 서..
-
NodeJS 스레드개발언어/Node.js 2022. 12. 12. 17:00
점원:스레드 ,주문: 요청, 서빙:응답 싱글 스레드 대신 논 블로킹 모뎅릉 채택하여 일부 코드(I/O)를 백그라운드(다른 프로세스)에서 실행 가능 요청을 먼저 박고, 완료될 때 응답함 I/O 관련 코드가 아닌 경우 싱글 스레드,블로킹 모델과 같아진다. 멀티 스레드 모델과의 비교 싱글 스레드 모델은 에러 처리를 하지 못하는 경우 멈춤 프로그래밍 난이도도 쉽고,CPU,메모리 자원 적게 사용 멀티 스레드 모델은 에러 발생 시 새로운 스레드를 생성하여 극복 단, 새로운 스레드 생성이나 놀고있는 스레드 처리에 비용 발생 프로그래밍 난이도 어려움 스레드 수만큼 자원을 많이 사용함 점원(스레드)이 하나인 체인점(노드 프로세스)을 여러개 -> 멀티 프로세싱 ex) 식당에 손님이 많아져서 요청이 많아지면 근처에 동일한 ..