본문 바로가기

전체 글

(75)
[모던 JS] CH27. 배열 (#15) CH27. 배열 27.1 배열이란? - 배열이 가지고 있는 값: 요소 - 모든 값은 배열의 요소가 될 수 있음 - 인덱스를 가짐 - 대괄호 내에 접근하고 싶은 요소의 인덱스 지정 - 배열의 길이를 나타내는 length 프로퍼티를 가짐 const arr = ['apple', 'banana', 'orange']; - for 문을 통해 순차적으로 요소에 접근할 수 있음 - JS에 배열이라는 타입은 존재하지 않음 (배열은 객체 타입) - 배열의 프로토타입 객체는 Array.prototype for (let i = 0; i < arr.length; i++) { console.log(arr[i]); } typeof arr // object - 일반 객체와 구별되는 배열의 특징 ! 배열의 장점- 처음부터 순차적으로 ..
[모던 JS] CH26. ES6 함수의 추가 기능 (#14) CH26. ES6 함수의 추가 기능 26.1 함수의 구분 - ES6 이전의 모든 함수는 일반 함수로서 호출할 수 있는 것은 물론 생성자 함수로서 호출할 수 있음 - 일반적으로 메서드라고 부르던 객체에 바인딩된 함수도 callable이며 constructor - 객체에 바인딩된 함수도 일반 함수로서 호출할 수 있는 것은 물론 생성자 함수로서 호출할 수 있음 var obj = { x:10, f:function() { return this.x; } }; console.log(obj.f()); // 10 var bar = obj.f; console.log(bar()); console.log(new obj.f()); - 일반 함수는 함수 선언문이나 함수 표현식으로 정의한 함수 26.2 메서드 - ES6 사양에서 ..
[모던 JS] CH25. 클래스 (#13) CH25. 클래스 25.1 클래스는 프로토타입의 문법적 설탕인가? - 자바스크립트는 프로토타입 기반의 객체지향 언어 - 이런 언어는 클래스가 필요없는 객체지향 프로그래밍 언어 - ES5에서는 클래스 없이도 다음과 같이 생성자 함수와 프로토 타입을 통해 객체지향 언어의 상속을 구현할 수 있음 // ES5 생성자 함수 var Person = (function() { function Person(name) { this.name = name; } Person.prototype.sayHi = function(){ console.log('Hi! My name is ' + this.name); }; return Person; }()); var me = new Person('Lee'); me.sayHi(); // Hi..
[모던 JS] CH24. 클로저 (#12) CH24. 클로저 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. 24.1 렉시컬 스코프 렉시컬 스코프(정적 스코프)? → 자바 스크립트 엔진은 함수를 어디서 호출했는지가 아니라 함수를 어디에 정의했는지에 따라 상위 스코프를 결정 → 렉시컬 환경의 "외부 렉시컬 환경에 대한 참조"에 저장할 참조값, 즉 상위 스코프에 대한 참조는 함수 정의가 평가되는 시점에 함수가 정의된 환경(위치)에 의해 결정 24.2 함수 객체의 내부 슬롯 - 함수는 자신의 내부 슬롯 [[Environment]]에 자신이 정의된 환경, 즉 상위 스코프의 참조를 저장함 - 함수 객체의 내부 슬롯에 저장된 현재 실행중인 실행 컨텍스트의 렉시컬 환경의 참조가 바로 상위 스코프 - 자신이 호출되었을 때 생성될 함수 렉시컬 환경의..
[코드] 2 1. 포켓몬 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(nums) { const maxNums = Array.from(new Set(nums)) return Math.min(nums.length / 2, maxNums.length); } 2. 모의고사 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(answers) { let answer =..
[모던 JS] CH 20. strict mode, CH 21. 빌트인 객체, CH22. this CH 20. strict mode 20.1 strict mode란? - 개발자의 의도와 상관없이 발생한 암묵적 전역은 오류를 발생시키는 원인이 될 가능성이 큼 - strict mode(엄격 모드)는 자바스크립트 언어의 문법을 좀 더 엄격히 적용하여 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러를 발생시킴 20.2 strict mode 의 적용 - 전역의 선두 또는 함수 몸체의 선두에 'use strict';를 추가함 'use strict'; function foo() { x = 10; // ReferenceError } foo(); 20.3 전역에 strict mode를 적용하는 것은 피하자 - 전역에 적용한 strict mode는 스..
[모던 JS] CH19 프로토타입 CH19. 프로토타입 19.1 객체지향 프로그래밍 - 속성을 통해 여러 개의 값을 하나의 단위로 구성한 복합적인 자료구조를 객체라고 함 - 객체지향 프로그래밍은 객체의 상태를 나타내는 데이터와 상태 데이터를 조작할 수 있는 동작을 하나의 논리적인 단위로 묶어 생각함 - 객체의 상태 데이터를 프로퍼티, 동작을 메서드라고 함 19.2 상속과 프로토타입 - 자바스크립트는 프로토타입을 기반으로 상속을 구현하여 불필요한 중복을 제거함 - 중복을 제거하는 방법? 기존의 코드를 적극적으로 재사용하는 것 -> 상속 // 생성자 함수 function Circle(radius) P this.radius = radius; } Circle.prototype.getArea = function() { return Math.PI ..
[모던 JS] CH18 함수와 일급객체 CH18. 함수와 일급 객체 18.1 일급객체 >> 일급 객체의 조건 1. 무명의 리터럴로 생성할 수 있음 (런타임에 생성 가능) 2. 변수나 자료구조 (객체, 배열 등)에 저장 가능 3. 함수의 매개변수에 전달 가능 4. 함수의 반환값으로 사용가능 - 함수가 일급 객체라는 것은 함수를 객체와 동일하게 사용할 수 있다는 의미 - 객체는 값이므로 함수는 값과 동일하게 취급할 수 있음 - 자바스크립의 함수는 일급객체 18.2 함수 객체의 프로퍼티 - 함수는 객체이므로 프로퍼티를 가질 수 있음 - arguments, caller, length, name, prototype 프로퍼티는 모두 함수 객체의 데이터 프로퍼티 - __proto__는 접근자 프로퍼티, 함수 객체 고유의 프로퍼티가 아니라 Object.pr..