javaScript

· javaScript
Symbol심볼은 유일한 식별자를 만들기위해서 사용한다 ES6 버전부터 새롭게 추가된 자료형이다. Symbol 특징1. 유일성이 보장된다유일성이 보장되기 때문에 동일한 설명의 Symbol을 만들어도 각각 다른 값을 가진다const id = Symbol('설명');const id2 = Symbol('설명');console.log(id === id2); // false 2.자동 형 변환이 되지 않는다JavaScript에서는 암시적 형 변환이 자유롭게 일어나지만 Symbol은 형 변환이 안된다const id = Symbol('설명');const id2 = Symbol('설명');console.log('' + id); //TypeError: Cannot convert a Symbol value to a stri..
· javaScript
프로토타입이란?JavaScript는 프로토타입 기반 언어라고 한다 JavaScript를 처음 만든 개발자는 다른 언어들에 존재하는 class 개념을 만들지 않고class와 비슷하게 동작하는 프로토타입 개념으로 객체지향적 언어를 만들었다 프로토타입은 객체를 참조 하여 새로운 객체를 생성하는 방식으로 동작하는데 프로토타입에는 Prototype Object와 Prototype Link가 존재한다이 둘을 통틀어 프로토타입 이라고 한다 * ES6 버전부터 JavaScript는 class를 지원하지만 껍데기만 class지 내부적으로 prototype이다 Prototype의 생성 과정함수를 정의하는 시점에는 2가지의 작업이 내부적으로 수행이 되는데 1.Prototype Object 생성 생성함수를 정의하면 함수와 P..
· javaScript
passport 모듈로 유저 인증을 구현하던 중 이상한 점을 발견했다 상황 passport.serializeUser((user, done) => { done(null, user.id); //로그인 전략(Strategy)에서 전달받은 user객체의 id값을 세션에 저장 }); 로그인 성공시 세션에 유저의 고유한 id를 저장하는 passport 함수인데 user객체에 id를 직접적으로 접근한다 그런데 나는 시퀄라이즈를 사용하고 있었고 User.fineOne() 메서드를 통해 반환 받은 유저 정보를 콘솔에 찍어보니 id를 직접적으로 접근할 수 없는 구조였다 아래는 시퀄라이즈를 통해 반환받은 유저 데이터이다 User { dataValues: { id: 2, email: 'zxc@zxc.com', nick: '이..
· javaScript
flat, every, some 모두 배열 메서드이다 flat flat은 2차원 배열을 1차원으로 3차원 배열은 2차원으로 1차원 배열은 1차원으로 변환시킨다 let arr = [[1,2],[3,4],[5,6]] arr.flat() //output (6) [1, 2, 3, 4, 5, 6] let highArr = ['1','배열',[1,5],[[3,'차원','배열']]] highArr.flat() //output (5) ['1', '배열', 1, 5, Array(3)] 0: "1" 1: "배열" 2: 1 3: 5 4: (3) [3, '차원', '배열'] //3차원 배열은 2차원 배열로 every every 메서드는 1차원 배열에서만 사용 가능하고 해당 값을 모두 만족해야 true 하나라도 만족 하지 않으..
· javaScript
프로토타입에 대해 공부해봤지만 완벽히 이해가 되진 않는다 프로토타입 체인이란 객체들 사이의 연결 고리이고 해당 객체의 프로퍼티에 접근했을때 만약 없는 프로퍼티라면 참조하는 객체의 프로토타입에서 프로퍼티를 찾는다 이렇게 타고타고 올라가면 최상위 객체인 Object객체 까지 프로토타입 체인을 통해서 거슬러 올라가게 된다 그리고 프로토타입에 어떠한 속성이나 함수를 정의하면 참조하여 객체들이 생성될때 생성된 객체들은 프로토타입에 정의된 어떠한 속성이나 함수를 참조하기 때문에 메모리 효율이 좋아진다 만약 프로토타입에 어떠한 속성이나 함수를 정의하지 않고 해당 객체의 인스턴스로 참조(상속)받게 되면 상속으로 생성되는 객체마다 각각 고유의 속성이나 함수를 갖기때문에(고유의 메모리가 생성된다) 메모리 효율이 낮아진다
· javaScript
1) 데이터 프로퍼티 - 키와 값으로 형성된 실질적 값을 갖고있는 프로퍼티 //데이터 프로퍼티 const jun = { name: 'jun', //property year: 1998, //property }; 2) 엑세서 프로퍼티 - 자체적으로 값을 갖고 있지 않지만 다른 값을 가져오거나 설정할때 호출되는 함수로 구성된 프로퍼티 ex) getter, setter const jun = { //데이터 프로퍼티 name: 'jun', //property year: 1998, //property //엑세서 프로퍼티 get age() { return new Date().getFullYear() - this.year; }, set age(age) { this.year = new Date().getFullYear()..
· javaScript
static 이라는 키워드로 선언 하면 정적 메소드를 선언 할 수 있다 클래스를 인스턴스화 해서 메서드를 사용하는 것이 아닌 인스턴스화를 하지 않고 해당 클래스명을 통해 메서드를 호출 할 수 있다 오늘 공부를 하던 중 factory constructor 이라는 개념을 접하게 되었다 class dog { name; year; constructor(name, year) { this.name = name; this.year = year; } } class 키워드로 name과 year를 파라미터로 받는 dog 클래스를 만들었다 class dog { name; year; constructor(name, year) { this.name = name; this.year = year; } static fromObjec..
· javaScript
얕은 복사 MDN 주소 https://developer.mozilla.org/ko/docs/Glossary/Shallow_copy 얕은 복사 - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN 객체의 얕은 복사는 복사본의 속성이 복사본이 만들어진 원본 객체와 같은 참조 (메모리 내의 같은 값을 가리킴)를 공유하는 복사입니다. 따라서 원본이나 복사본을 변경하면, 다른 객체 또한 developer.mozilla.org 얕은 복사 복사본의 최상위 속성을 재할당해도 원본 객체에는 영향을 끼치지 않습니다. 복사본의 중첩 객체 속성을 재할당하면 원본 객체에 영향을 끼칩니다. 복사본의 최상위 속성 (인덱스 0번의 경우)은 재할당 해도 원본 객체에 영향이 없다복사본의 중첩된 객체 속성을 재할당 하면 원본 ..
nyh98
'javaScript' 카테고리의 글 목록