[모던 자바스크립트 Deep Dive] 17장 생성자 함수에 의한 객체 생성
·
Javascript
Object 생성자 함수`new` 연산자와 함께 `Object` 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다.빈 객체를 생성한 이후 프로퍼티 메서드를 추가하여 객체를 완성할 수있다.생성자 함수란 `new` 연산자와 함께 호출하여 객체(인스턴스)를 생성하는 함수를 말한다생성자 함수에 의해 생성된 객체를 인스턴스라 한다.자바스크립트는 `Object` 함수 외에도 `String`, `Number`, `Boolean`, `Function`, `Array`, `Date`, `RegExp`, `Promise` 등의 built-in 생성자 함수를 제공한다const person= new Object();person.name = "lee";person.sayHello= function() { console.l..
[모던 자바스크립트 Deep Dive] 16장 - 프로퍼티 어트리뷰트
·
Javascript
내부 슬롯과 내부 메서드내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티와 의사 의사 메서드다.내부 슬롯과 내부 메서드는 자바스크립트 엔진의 내부 로직이므로 원칙적으로 자바스크립트는 내부 슬롯과 내부 메서드에 직업적으로 접근하거나 호출할 수 있는 방법을 제공하지 않는다.일부 내부 슬롯과 내부 메서드에 한하여 직접적으로 접근할 수 있는 수단을 제공하기는 한다.모든 객체는 [[Prototype]]이라는 내부 슬롯을 `__proto__`를 통해 간접적으로 접근할 수 있다.프로퍼티 어트리뷰트프로퍼티 어트리뷰트란 프로퍼티의 상태를 나타낸다.자바스크립트 엔진은 프로퍼티를 생성할 때 프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 기본값으..
[error] Sequelize A is not associated to B
·
Node.js
시퀄라이즈를 이용해 도메인 모델을 조회할때 매핑된 유저모델을 함께 가지고오려고 했는데 해당 오류가 발생했다.API서버에 유저가 도메인을 등록하면 API서버는 토큰을 발급해주는 기능으로 유저는 여러개의 도메인을 보유할 수 있고 하나의 도메인은 하나의 유저만 소유할 수 있게 해 일대다 관계로 매핑이 되어있었다.`models/user.js`// models/user.jsconst Sequelize = require("sequelize");class User extends Sequelize.Model { static initiate(sequelize) { User.init( { email: { type: Sequelize.STRING(40), allo..
[모던 자바스크립트 Deep Dive] 15장 - let, const 키워드와 블록 레벨 스코프
·
Javascript
var 키워드로 선언한 변수의 문제점① 변수 중복 선언 허용`var` 키워드로 선언한 변수는 중복 선언이 가능하다.var x = 1;var y = 1;var x = 100;var y;console.log(x) // 100console.log(y) // 1`var` 키워드로 선언한 변수를 중복 선언하면 초기화문 유무에 따라 다르게 동작한다.초기화문이 있는 변수 선언문은 자바스크립트 엔진에 의해 `var` 키워드가 없는 것처럼 동작한다.초기화문이 없는 변수 선언문은 무시된다 -> 에러는 발생하지 않는다.② 함수 레벨 스코프`var` 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정한다.함수 외부에서 `var` 키워드로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역 변수가 된다.③ ..
[노드 교과서] 섹션 9 - 익스프레스로 SNS 서비스 만들기
·
Node.js
PassportPassport 모듈은 이름 그대로 우리의 서비스를 사용할 수 있게 해주는 여권 같은 역할을 하는 모듈다.회원 가입과 로그인을 직접 구현할 수도 있지만, 세션과 쿠키 처리 등 복작한 작업을 Passport 모듈이 대신 해준다. Passposrt를 사용해 구글, 페이스북, 카카오톡 같은 기존으 SNS 계정으로 로그인할 수도 있다. Passport는 다양한 인증방식을 전략(Strategy)이라는 플러인을 제공한다. Passport 개념전략 (Strategy)인증로직을 담당하며, 다양한 인증 방식을 구현하기 위해 사용한다.`passport-local`: 이메일/비밀번호 기반 인증`passport-kakao`: 카카오 인증`passport-jwt`: JWT 토큰 기반 인증serializeUser ..
JS로 차트 훼손 없이 엑셀 수정하기!!!
·
Node.js
자바스크립트로 엑셀 파일을 생성하거나 수정하는데 자주 사용되는 npm 패키지들이 있습니다. 세 패키지에 대해 알아보고 어느 상황에서 어떤 라이브러리를 쓰면 좋을지 정리해 보겠습니다.sheetJSExcelJSxlsx-populate SheetJS가장 대표적으로 많이 사용되는 라이브러리입니다. 주로 쓰거나 읽기 작업에 사용되는 라이브러리입니다. 가볍고 빠르기 때문에 간단한 작업을 하거나 브라우저를 사용할때 이용하면 좋습니다. ExcelJSSheetJS에 비해 스타일 지정, 차트, 머지 등 엑셀의 레이아웃 요소를 조작할 수 있는 고급 기능들을 더 제공합니다. 데이터 시각화와 포맷 중심의 엑셀 작업에서 주로 활용됩니다. xlsx-populate 엑셀 문서 조작에 초점을 맞춘 라이브러리입니다. 기존 엑셀 파일을 ..
[모던 자바스크립트 Deep Dive] 14장 전역변수의 문제점
·
Javascript
변수의 생명 주기변수는 생성되고 소멸되는 생명주기가 있다.변수는 자신이 선언된 위치에서 생성되고 소멸한다.전역 변수의 생명주기는 애플리케이션의 생명주기와 같다.함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고 함수가 종료하면 소멸한다.-> 변수 선언은 런타임에 실행되는 것이 아니라 런타임 이전 단계에서 자바스크립트 엔진에 의해 먼저 실행된다는 말은 전역 변수에 한정된 것이다.-> 지역 변수의 생명 기는 함수의 생명주기와 일치한다.함수 몸체 내부에서 선언된 지역 변수의 생명주기는 함수의 생명주기와 대부분 일치하지만 지역 변수가 함수보다 오래 생존하는 경우도 있다.변수의 생명 주기는 메모리 공간이 확보된 시점부터 메모리 공간이 확보된 시점부터 메모리 공간이 해제되어 가용 메모리 풀에 반환되는 시점까..
[모던 자바스크립트 Deep Dive] 13장 스코프
·
Javascript
스코프란?모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효범위가 결정된다. 이 유효범위를 스코프라고 한다.스코프는 식별자가 유요한 범위를 말한다.var x = 'global';function foo() { var x = 'local'; console.log(x);}foo(); // localconsole.log(x); // global-> 자바스크립트 엔진은 이름이 같은 두 개의 변수 중에서 어떤 변수를 참조해야할 것인지를 결정해야한다. 이를 식별자 결정이라 한다.-> 자바스크립트 엔진은 스코프를 통해 어떤 변수를 참조해야 할 것인지 결정한다.-> 스코프란 자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙이라고도 할 수..