모던 자바스크립트 Deep Dive

    22장 this - 객체는 상태를 나타내는 프로퍼티와 동작을 나타내는 메서드를 하나의 논리적인 단위로 묶은 복합적인 자료구조이다. - this는 자신이 속한 객체 또는 자신이 '생성할' 인스턴스를 가리키는 자기 참조 변수이다. this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조할 수 있다. 함수를 호출하면 argument 객체와 this가 암묵적으로 함수 내부에 전달된다. this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조할 수 있다. this 바인딩은 함수 호출 방식에 의해 동적으로 결정된다. - this 바인딩은 함수 호출 시점에 결정된다. - 일반 함수 호출에서는 기본적으로 this에 전역 객체가 바인딩된다. - 콜백 함수가..

    모던 자바 스크립트 Deep Dive 21

    21장 빌트인 객체 - 표준 빌트인 객체는 ECMAScript 사양에 정의된 객체를 말하며, 애플리케이션 전역의 공통 기능을 제공한다. - 호스트 객체는 사양에 정의도어 있지 않지만 자바스크립트 실행 환경(브라우저 또는 Node.js환경)에서 추가로 제공하는 객체를 말한다 - 사용자 정의 객체는 표준 빌트인 객체와 호스트 객체처럼 기본 제공되는 객체가 아닌 사용자가 직접 정의한 객체를 말한다. - 원시값을 객체처럼 사용하면 자바스크립트 엔진은 암묵적으로 연관된 객체를 생성하여 생성된 객체로 프로퍼티에 접근하거나 메서드를 호출하고 다시 원시값으로 되돌린다.(래퍼 객체) - 전역 객체 자신은 어떤 객체의 프로퍼티도 아니며 객체의 계층적 구조상 표준 빌트인 객체와 호스트 객체를 프로퍼티로 소유한다는 것을 말한..

    [JS]공부하며 얻은 짧은 팁s.

    자바스크립트는 개발자의 직접적인 메모리 제어를 허용하지 않는다. 자바스크립트 엔진은 소스코드를 한 줄씩 순차적으로 실행하기에 앞서 먼저 소스코드의 평가 과정을 거치면서 소스코드를 실행하기 위한 준비를 한다. 자바스크립트의 함수에서 return 값을 지정하지 않았을 경우 undefined 를 반환한다. Vscode에서 fs 모듈이 먹히지 않을경우 경로명에 있는 폴더나 파일의 이름을 확인하여 한글혹은 영문으로 시작하는 폴더 이름으로 바꾸어서 실행한뒤 다시 해보면 정상적으로 작동한다.(아직 이유모름). 값이 할당될때는 undefined가 저장되어있던 메모리 공간을 지우고 그 메모리 공간에 새로운 값을 할당하는게 아니라 새롱누 메모리 공간을 확보하고 그곳에 할당값을 지정한다. 배열의 앞에 사용 : unshift..

    자료구조 구현

    Stack const stack = []; stack.push('a'); stack.push('b'); stack[stack.length - 1 ] // top stack.pop(); Queue const queue = []; queue.push('a'); queue.push('b'); queue.shift(); queue.shift(); Linked List const Node = value => { return { value, next: null } } const list = { head: null, tail: null, add(value) { const newNode = Node(value) if (list.head) { const tailStore = list.tail list.tail = new..

    객체와 변경불가성

    Immutability 변경불가성은 객체가 생성된 이후 그 상태를 변경할 수 없는 디자인 패턴을 의미한다. 변경불가성은 함수형 프로그래밍의 핵심 원리이다. 객체는 참조 형태로 전달하고 전달받는다. 의도하지 않은 객체의 변경이 발생하는 원인의 대다수는 "레퍼런스를 참조한 다른 객체에서 객체를 변경"하기 때문이다. 이 문제의 해결 방법은 비용은 조금 들지만 객체를 불변객체로 만들어 프로퍼티의 변경을 방지하며 객체의 변경이 필요한 경우에는 참조가 아닌 객체의 방어적 복자(defensive copy)를 통해 새로운 객체를 생성한 후 변경한다. 또는 Observer 패턴으로 변경에 대처할 수도 있다. 불변객체를 사용하면 복제나 비교를 위한 조작을 단순화 할 수 있고 성능 개선에도 도움이 된다. 하지만 객체가 변경..

    알고리즘 문제풀이 입력 받아오기.

    알고리즘 문제를 풀려면 입력을 받고 출력을 하는게 기본인데 JS를 해본경험이 거의 없기때문에 설명을 봐도 궁금한점이 많아서 좀더 자세히 찾아보았다. 틀린내용이 있을 수 있으나 본인은 이렇게 이해하고 쓰는중..... const testline = require('readline'); require() 함수는 node.js 에서 외부 모듈을 불러오고 싶을때 사용한다. require() 함수를 통해서 readline 이라는 모듈을 불러올 것이다. realine 모듈에는 데이터를 읽어오는데 필요한 기능이 담겨있기 때문이다. testline은 그냥 변수이름이다. 아무거나 편한대로 사용하자. const rl = testline.createInterface({ input: process.stdin, output: p..

    객체

    객체 자바스크립트는 객체(object) 기반의 언어이며 자바스크립트를 이루고 있는 거의 "모든 것"이 객체이다. 원시 타입을 제외한 나머지 값들(함수, 배열, 정규표현식 등)은 모두 객체이다. 자바스크립트의 객체는 키(key)와 값(value)으로 구성된 프로퍼티(Property)들의 집합이다. 프로퍼티의 값으로 자바스크립트에서 사용할 수 있는 모든 값을 사용할 수 있다. 자바스크립트의 함수는 일급 객체이므로 값으로 취급할 수 있다. 따라서 프로퍼티 값으로 함수를 사용할 수도 있으며 프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 메소드라 부른다. 객체는 데이터를 의미하는 프로퍼티와 데이터를 참조하고 조작할 수 있는 동작을 의미하는 메소드로 구성된 집합이다. 객체는 데이이터(프로퍼티)와 그 데이터..

    타입 변환

    개발자에 의해 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환(Explicit coercion) 또는 타입 캐스팅(Type casting)이라 한다. var x = 10; // 명시적 타입 변환 var str = x.toString(); // 숫자를 문자열로 타입 캐스팅한다. console.log(typeof str); // string 동적 타입 언어인 자바스크립트는 개발자의 의도와는 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되기도 한다. 이를 암묵적 타입 변환(Implicit coerion) 또는 타입 강제 변환 (Type coercion) 이라고 한다. var x = 10; // 암묵적 타입 변환 // 숫자 타입 x의 값을 바탕으로 새로운 문자열 타입의 값을 생성해 표현식..