본문 바로가기

Front-end/Javascript

(5)
Effective Javascript(5,6,7장) 5. 배열과 딕셔너리 item43. 직접적인 객체의 인스턴스로 가벼운 딕셔너리를 만들어라 객체는 문자열 프로퍼티의 이름을 값으로 매핑하기때문에 딕셔너리, 즉 문자열을 값으로 매핑하는 collections를 구현하는데 매우 간편하다. for...in 문을 통해 객체의 프로퍼티 명을 열거하기 쉬움 하지만, 모든 객체는 prototype객체의 프로퍼티를 상속하기때문에 인스턴스에서 관리하는 프로퍼티 외에 prototype에서 고정된 프로퍼티또한 포함하게 됨 배열을 생성하고 배열에 프로퍼티를 추가하는 방식은 프로토타입을 오염시킬수 있음 객체를 리터럴로 생성하고 프로퍼티를 추가하는 방식은 Object.prototype에 프로퍼티 추가가 가능하여 안전함이 보장되지 않음 객체리터럴을 사용해 가벼운 딕셔너리를 만들어 사..
Effective Javascript(3,4장) 3. 함수 사용하기 item18. 함수, 메서드, 생성자 호출의 차이를 이해하라 하나의 생성자 function을 사용하는 세가지 서로 다른 패턴 함수호출 (function hello(){}) this 사용이 가능하지만 함수로써 호출되면 수신자가 전역객체가 되어 유용하지 않음 메서드 -> 함수로 동작하는 객체의 프로퍼티 메서드 호출시 호출 표현식 스스로가 수신자 객체 this로의 바인딩을 결정함 보통 어떤 객체의 메서드를 호출함면 메서드를 찾고, 해당 객체를 수신자 객체로 사용 생성자(new 연산자로 실행) this값으로 새로운 객체를 전달하고, 암묵적으로 이 객체를 결과로 반환 객체를 초기화 하는게 주요 역할 ! strict mode에서 this의 기본바인딩이 undefined로 변경됨 item19. 고..
Effective Javascript(1,2장) 1. 자바스크립트에 익숙해지기 item1. 어떤 자바스크립트를 사용하고있는지 알아야한다 자바스크립트의 다양한 구현체들 때문에 어떤 기능이 어떤 플랫폼에서 사용가능한지 추적이 어려움 이유는 주요 생태계인 웹브라우저에서 개발자가 작성한 코드를 실행하기 위해 어떤 버전의 js를 사용할수 있는 제어할 방법이 없어서 따라서, 웹 프로그램은 모든 브라우저에서 지속적으로 동작할 수 있도록 주의 strict 모드 오류를 일으키기 쉽거나 문제를 일으킬만한 기능들을 사용할수 없게 만드는 방법 "use strict" 라는 고정문자열 추가로 활성화가 가능하므로 하위호환에도 문제가 없음 !스크립트 병합시 주의해야할 케이스 strict 모드는 스크립트 또는 함수 상단에 선언되었을 때만 인식 -> 병합 순서에 따라 전부 적용되지 ..
Core javascript(02-실행 컨텍스트) 실행할 코드에 제공할 환경정보 동일한 환경에 있는 코드들을 실행할때 필요한 환경 정보들을 모아 context를 구성 이를 call stack 에 쌓아올렸다가 가장 위에 있는 context와 관련있는 코드를 실행하는것으로 전체 코드의 환경과 순서를 보장 context 구성 방법 전역 eval() 함수 함수 호출 블록 call stack 에 실행 context가 쌓이는 순서 var a = 1; var outer = funtion () { var inner = function () { console.log(a) } inner(); } outer(); 코드 실행과 함께 전역 context가 쌓임 전역 context의 코드들을 실행 함수 호출시 함수의 환경 정보를 수집하여 실행 context를 생성 call st..
Core javascript(01-데이터 타입) 데이터 타입 1. 데이터 타입의 종류 2. 데이터 타입 배경지식 각 비트는 고유한 식별자가 있음 자바 등에서는 메모리 낭비를 최소화 하기위해 같은 정수여도 short → int 처럼 범위에 따라 형변환이 불가피했음 자바스크립트는 숫자의 경우 정수 or 부동소수 구분없이 8바이트를 확보함 모든 데이터는 바이트 단위의 식별자(메모리 주소값)을 통해 서로 구분하고 연결됨 3. 변수 선언과 데이터 할당 변수(variable) 변할 수 있는 데이터 식별자(identifier) 데이터(변수)를 식별하는 이름(변수명) 데이터 할당 var a; a = 'abc'; (변수 영역)주소(변수 영역)데이터(데이터 영역)주소(데이터 영역)데이터 … 1002 1003 … 이름: a 값: @5004 … 5002 5003 5004 ..