목록개발 도서/자바스크립트 deepdive (48)
진취적 삶
34.1 이터레이션 프로토콜 순회 가능한 데이터 컬렉션을 만들기 위해 EMCAScript 사양에 정의하여 미리 약속한 규칙 이터러블 프로토콜 Symbol.iterator 를 프로퍼티 키로 사용한 메서드를 직접 구현하거나 프로토 타입 체인을 통해 상속 받은 Symbol.iterator 메서드를 호출하면 이터레이터 프로토콜을 준수한 이터레이터를 반환한다. 이터러블 프로토콜을 준수하 객체를 이터러블이라 한다. 이러테이터 프로토콜 Symbol.iterator 메서드를 호출하면 이터레이터 프로토콜을 준수하 이터레이터를 반환한다.이터러블 프로토콜을 준수한 객체를 이터러블이라 한다.이터러블은 for .. of 문으로 순회할수 있다. 일반 객체는 이터러블 프로토콜을 준수한 이러터블이 아니다. 일반객체는 for..of ..
스프레드 문법 … 하나로 뭉쳐 있는 여러 값들의 집합을 펼처서 개별적인 값들의목록으로 만든다 . 스프레드 문법을 사용할수 있는 대상은 Array,String,Map,Set,DOM 컬렉션 ,argument와 같이 for… of 문으로 순회할수 있는 이터러블에 한전한다. console.log(...[1, 2, 3]); //1 2 3 console.log(...new Set([1, 1, 2])); // 1 2 console.log(...{ a: 1, b: 2 }); //Found non-callable @@iterator 스프레드 문법의 결과는 값이 아니다. 스프레드 문법의 결과는 변수에 할당할수 없다 . 35.1 함수 호출문의 인수 목록에서 사용하는 경우 const arr = [1, 2, 3]; const ..
26.1 함수의 구분 es6 이전의 모든 함수는 일반함수로서 호출할수 있는 것은 물론 생성자 함수로서 호출할수있다. 26.2 메서드 메서드는 메서드 축약 표현으로 정의된 함수만을 의미한다. es6에서 정의한 메서드는 인스턴스를 생성할수 없는 non-constructor 이다 . ES6 메서드는 자신을 바인딩한 객체를 가리키는 내부슬롯 HomeObject를 가진다 ES6 메서드가 아닌 함수는 내부슬롯 HomeObject를 갖지않기때문에 super 키워드를 사용할수 없다. 26.3 화살표 함수 26.3.1 화살표 함수 정의 함수정의 함수 선언문으로 정의할수 없고 함수 표현식으로 정의해야한다. const multiply =(x,y) => x+y ; multiply(2,3) 매개변수선언 여러개인 경우 소괄호 한..
27.1 배열이란 배열: 여러개의 값을 순차적으로 나열한 자료구조 가지고 있는 값을 요소(element)라고 부른다 ,자신의 위치를 나타내는 인덱스를 갖는다 인덱스는 0부터 시작 배열의 길이를 나타내는 length 프로퍼티를 갖는다. 배열은 객체 타입 배열의 장점은 처음부터 순차적으로 요소에 접근할수 있고 , 마지막부터 역순으로 요소에 접근할수 있으며 특정 위치부터 순차적으로 요소에 접근할수 있다는것이다. 27.2 자바스크립트 배열은 배열이 아니다 . 자바스크립트 배열은 배열의 요소를 위한 각각의 메모리 공간은 동일한 크기를 갖지 않아도 되며 , 연속적으로 이어져 있지 않을수도 있다. 배열의 요소가 연속적으로 이어져 있지 않는 배열을 희소 배열이라고 한다. 자바스크립트 배열은 일반적인 배열의 동작을 흉내..
28.1 Nubmer 생성자 함수 number 객체는 생성자 함수 객체다 .따라서 new 연산자와 함께 호출하여 Number 인스턴스를 생성할수 있다. const numObj = new Number(); console.log(numObj); //Number [PrimitiveValue]:0 PrimitiveValue 접근할수 없는 프로퍼티 이는 [[NumberData] 내부슬롯을 가리킨다 new 연산자를 사용하지 않고 Number 생성자 함수를 호출하면 Number 인스턴스가 아닌 숫자를 반환한다 . 28.2 Number 프로퍼티 28.2.2 Number.MAX_VALUE console.log(Number.MAX_VALUE); //1.7976931348623157e+308 console.log(Infin..
Math 는 수학적 상수와 함수를 위한 프로퍼티와 메서드 제공 Math는 정적프로퍼티와 정적 메서드만 제공 29.1 Math 프로퍼티 29.1.1 Math.PI Math.PI //3.14159265 29.2 Math 메서드 29.2.1 Math.abs 인수로 전달된숫자의 절대값 반환 Math.abs(-1); // 1 Math.abs(1); // 1 Math.abs(''); // 0 29.2.2 Math.round 인수로 전달된 숫자의 소수점 이하를 반올림한 정수를 반환 Math.roudn(1.4) //1 Math.roudn(1.6) //2 29.2.3 Math.ceil 인수로 전달된 숫자의 소주점 이하를 올림한 정수 Math.roudn(1.4) //2 Math.roudn(1.6) //2 29.2.4 Ma..
표준 빌트인 객체 Date는 날짜와 시간을 위한 메서드를 제공하는 빌트인 객체이면서 생성자 함수다 . 기술적인 표기에서는 UTC(협정 세계시) 국제 표준시를 사용 30.1 Date 생성자 함수 Date 생성자 함수는 1970년 1월 1일을 기점으로 한다. const date = new Date(); console.log(date); //2023-04-04T04:48:36.271Z const date = new Date(); console.log(date); //2023-04-04T04:48:36.271Z const date2 = new Date("2023/3/26/10:00:00:00"); console.log(date2); //2023-03-26T01:00:00.000Z 30.2 Date 매서드 30...
21.1 js 객체의 분류 표준 빌트인 객체 :ECMAScript 사양에 정의된 객체 js 실행환경과 관계없이 언제나 사용가능 호스트 객체: ECMAScript 정의되어있지 않지만 js 실행환경에서 추가로 제공하는 객체 사용자 정의객체 : 표준 빌트인 객체와 호스트 객체 처럼 기본 제공되는것이 아니라 사용자가 직접 정의한 객체 21.2 표준 빌트인 객체 Object ,String,Number 등등 40여개의 빌트인 객체 제공 Math, Reflect, JSON 을 제외한 표준빌트인 객체는 모두 인스터스를 생성할수 있는 생성자 함수 객체 21.3 원시값과 래퍼 객체 원시값이 있는데도 String,Number, Boolean을 사용하는 이유는 ? 원시값을 객체처럼 사용하면 js엔진은 암묵적으로 연관된 객체를..