27.9 배열 고차 함수함수를 인수로 전달받거나 함수를 반환하는 함수 2. Array.prototype.forEachfor문에 비해 성능이 좋지 않지만 가독성은 좋음요소가 아주 많은 배열이나 시간이 오래 걸리는 복잡한 코드가 아니라면 forEach 사용을 권장 5. Array.prototype.reduce빈 배열로 reduce를 호출한 경우: 에러 발생객체의 특정 프로퍼티 값을 합산하는 경우: undefined에 키로 접근하게 되어 원하는 결과를 얻을 수 없음-> 초기값을 전달하는 것이 안전함 6. Array.prototype.sometruthy한 값이 도출되는 순간 배열 순회 종료(mdn)빈 배열인 경우 false 반환 7. Array.prototype.everyfalsy한 값이 도출되면 배열 순회 종..
27.1 배열배열(array): 여러 개의 값(요소element)을 순차적으로 나열한 자료구조 배열의 생성자 함수: Array배열의 프로토타입 객체: Array.prototypeconst arr = [1, 2, 3];arr.constructor === Array // trueObject.getPrototypeOf(arr) === Array.prototype // true Arrray의 타입은 Object Object와 Array의 차이구분객체배열구조프로퍼티 키, 값인덱스, 요소값의 참조프로퍼티 키인덱스값의 순서XOlength 프로퍼티XO 반복문으로 자료구조를 순서대로 순회하려면 자료구조의 요소에 순서대로 접근할 수 있어야하고, 길이를 알 수 있어야 함 27.2 자바스크립트의 배열은 배열이 아니다자료구조에..
26.1 함수의 구분모든 함수는 callable(메서드, 일반 함수)이면서 constructor(생성자 함수)모든 함수가 constructor이기 때문에 불필요하게 prototype 프로퍼티를 가지고, 프로토타입 객체를 생성함-> 의도치 않은 동작이 발생할 수 있으며, 성능에도 좋지 않음 ES6부터 사용 목적에 따라 함수를 세 종류로 명확히 구분 constructorprototypesuperarguments일반 함수OOXO메서드XXOO화살표 함수XXXX 26.2. 메서드이전: 객체에 바인딩된 함수ES6 이후: 메서드 축약 표현으로 정의된 함수프로퍼티 값으로 익명 함수 표현식을 할당하는 방식 지양// 지양const obj = { fn: function () {},}; non-constructor, pro..
25.8 상속에 의한 클래스 확장1. 클래스 상속과 생성자 함수 상속생성자 함수는 확장할 수 없음-> 의사 클래스 상속 패턴을 사용하여 확장을 흉내내기도 했지만 클래스의 등장으로 필요치 않아짐var Bird = (function () { function Bird() { Animal.apply(this, arguments); } Bird.prototype = Object.create(Animal.prototype); Bird.prototype.constructor = Bird; Bird.prototype.fly = function () { return 'fly'; }; return Bird;}();var bird = new Bird(1, 5); 클래스는 기존 클래스를 상속받아..
25.6 클래스의 인스턴스 생성 과정1. 인스턴스 생성과 this 바인딩- 빈 객체 생성(인스턴스)- 클래스의 prototype 프로퍼티가 인스턴스의 프로토타입 객체로 설정됨- this 바인딩2. 인스턴스 초기화- 프로퍼티 추가, constructor가 인수로 전달받은 초기값으로 프로퍼티 초기화3. 인스턴스 반환- 완성된 인스턴스가 바인딩된 this가 암묵적으로 반환됨 25.7 프로퍼티1. 인스턴스 프로퍼티constructor 내부에서 정의해야 함ES6 클래스는 접근 제한자(private, public, protected 키워드)를 지원하지 않기 때문에 항상 public함 2. 접근자 프로퍼티자체적으로 값[[Value]]을 갖지 않고 다른 데이터 프로퍼티의 값을 읽거나 저장할 때 사용하는 접근자 함수로 ..
