Frontend/JavaScript47 21. String 문자열 String String 생성자 함수에 인수를 전달하지 않고 new 연산자와 함께 호출하면 [[StringData]] 내부 슬롯에 빈 문자열을 할당한 String 래퍼 객체를 생성한다. String 래퍼 객체는 배열과 마찬가지로 length 프로퍼티와 인덱스를 나타내는 숫자 형식의 문자열을 프로퍼티 키로, 각 문자를 프로퍼티 값으로 갖는 유사 배열 객체이면서 이터러블이다. String.prototype.indexOf : 인수로 전달받은 문자열을 검색하여 첫 인덱스를 반환. 검색에 실패하면 -1 반환. 2번째 인수로 검색을 시작할 인덱스를 전달할 수 있다. String.prototype.search : 인수로 전달받은 정규표현식과 매치하는 문자열을 검색하여 일치하는 문자열의 인덱스 반환. String.pr.. 2023. 12. 22. 20. Number, Math, Date, RegExp 👾 Number Number 생성자 함수 인수를 전달하지 않고 new 연산자와 함께 호출하면 [[NumberData]] 내부 슬롯에 0을 할당한 Number 래퍼 객체를 생성한다. new 연산자를 사용하지 않고 Number 생성자 함수를 호출하면 Number 인스턴스가 아닌 숫자 반환 Number 메서드 Number.isInteger : 인수로 전달된 숫자값이 정수인지 검사. Number.prototype.toFixed : 숫자를 반올림하여 문자열로 반환. 반올림하는 소수점 이하 자릿수를 나타내는 정수값을 인수로 전달. 인수를 생략하면 기본값 0이 지정(=정수로 표현) Number.prototype.toString : 숫자를 문자열로 변환하여 반환. 진법을 나타내는 정수값을 인수로 전달할 수 있다. 인수.. 2023. 12. 21. 19. 배열 배열 여러 개의 값을 순차적으로 나열한 자료구조 배열이 가지고 있는 값을 요소 element라고 부른다. 자바스크립트의 모든 값은 배열의 요소가 될 수 있다. 원시값은 물론 객체, 함수, 배열 등 자바스크립트에서 값으로 인정하는 모든 것은 배열의 요소가 될 수 있다. 배열은 인덱스와 length 프로퍼티를 갖기 때문에 for 문을 통해 순차적으로 요소에 접근할 수 있다. 자바스크립트에 배열이라는 타입은 존재하지 않는다. 배열은 객체 타입이다. (cf. 객체에는 값의 순서, length 프로퍼티가 없지만 배열에는 있다.) 배열은 배열 리터럴, Array 생성자 함수, Array.of, Array.from 메서드로 생성할 수 있다. 자바스크립트 배열은 배열이 아니다! 자료구조에서 말하는 배열은 동일한 크기의.. 2023. 12. 21. 18. 화살표 함수 화살표 함수 콜백 함수 내부에서 this가 전역 객체를 가리키는 문제를 해결하기 위한 대안이다. 화살표 함수와 일반함수의 차이 화살표 함수는 인스턴스를 생성할 수 없으므로 prototype 프로퍼티가 없고 프로토타입도 생성하지 않는다. 화살표 함수는 함수 자체의 this, super, arguments, new.target 바인딩을 갖지 않는다. 따라서 스코프 체인을 통해 상위 스코프의 ~을 참조한다. this 화살표 함수의 this는 콜백 함수 내부의 this가 외부 함수의 this와 다르기 때문에 발생하는 문제를 해결하기 위해 의도적으로 설계된 것이다. 화살표 함수는 함수 자체의 this 바인딩을 갖지 않는다. 화살표 함수 내부에서 this를 참조하면 상위 스코프의 this를 그대로 참조한다. 이를 .. 2023. 12. 21. 17. 클래스 클래스 자바스크립트는 프로토타입 기반 객체지향 언어. 클래스는 함수이며 기존 프로토타입 기반 패턴을 클래스 기반 패턴처럼 사용할 수 있도록 하는 문법적 설탕. 클래스와 생성자 함수의 차이 클래스를 new 연산자 없이 호출하면 에러가 발생한다. 하지만 생성자 함수를 new 연산자 없이 호출하면 일반 함수로서 호출된다. 클래스는 상속을 지원하는 extends와 super 키워드를 제공한다. 생성자 함수는 지원하지 않는다. 클래스는 호이스팅이 발생하지 않는 것처럼 동작한다. 하지만 함수 선언문으로 정의된 생성자 함수는 함수 호이스팅이, 함수 표현식으로 정의한 생성자 함수는 변수 호이스팅이 발생한다. 클래스 내의 모든 코드에는 암묵적으로 strict mode가 지정되어 실행. 하지만 생성자 함수는 암묵적으로 s.. 2023. 12. 21. 옵저버 패턴(Observer Pattern) 공부하기 참고 : https://junilhwang.github.io/TIL/Javascript/Design/Vanilla-JS-Store/#_1-중앙-집중식-상태관리 https://www.woong-jae.com/post/observer-pattern 내가 이해한 바 정리 전역 상태 관리 구현 어떤 상태가 있고 그 상태를 관찰하고 싶은 관찰자(observer)가 있고, 상태가 변하면 '변했다!'고 알려주는 알리미(observable)가 있다. 알리미 observable (Publisher 발행기관이라고도 함) 내부에 상태 데이터를 가지고 있음. observer(이 발행기관을 구독하는 subscriber)들을 저장할 수 있는 배열 혹은 Set을 가지고 있음. 어 너네 상태 계속 업데이트 받고 싶어? 등록해줄게. .. 2023. 12. 20. 이전 1 2 3 4 5 6 7 8 다음