JavaScript (98) 썸네일형 리스트형 [Deep dive] 17장 생성자 함수에 의한 객체 생성 17.1 Object 생성자 함수 생성자 함수 (constructor) - new 연산자와 함께 호출하여 객체(인스턴스)를 생성하는 함수 인스턴스(instance) - 생성자 함수에 의해 생성된 객체 - new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환 //빈 객체의 생성 const person = new Object(); //프로퍼티 추가 person.name = 'Lee'; person.sayHello = function () { console.log('Hi! My name is' + this.name); }; console.log(person); //{ name: 'Lee', sayHello: [Function (anonymous)] }] person.sayHello.. [Deep dive] 16장 프로퍼티 어트리뷰트 16.1 내부 슬롯과 내부 메서드 - 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ESMAScript 사양에서 사용하는 의사 프로피터와 의사 메서드 - 자바스크립트 엔진의 내부로직이므로 개발자가 직접 접근 불가 - 일부 내부 슬롯과 내부 메서드에 한하여 간접적으로 접근할 수 있는 수단 제공 ex) - 모든 객체는 [[Prototype]]이라는 내부 슬롯을 가짐 - [[Prototype]]은 __proto__를 통해 간접적으로 접근 가능 const o = {}; 0.__proto__ //object.prototype 16.2 프로퍼티 어트리뷰트와 프로퍼티 디스크립터 객체 - 자바스크립트 엔진은 프로퍼티를 생성할 때 프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 기본값으로 자동정의 프로퍼티 어트리뷰트.. [Deep dive] 15장 let,const 키워드와 블록 레벨 스코프 15.1 var 키워드로 선언한 변수의 문제점 1) 변수 중복 선언 허용 - var 키워드로 선언한 변수는 중복 선언이 가능 - 의도치 않게 먼저 선언된 변수 값이 변경되는 부작용 발생 2) 함수 레벨 스코프 - var 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 허용 - var키워드로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역 변수가 됨 3) 변수 호이스팅 - var 키워드로 선언한 변수는 변수 호이스팅에 의해 변수 선언문 이전에 참조 가능 - 할당문 이전에 변수를 참조하면 언제나 undefined 반환 - "선언단계"와 "초기화 단계"가 동시에 진행 //이 시점엔는 변수 호이스팅에 의해 이미 foo 변수가 선언됨 (1.선언단계) //변수 foo는 undefined로 초기.. [Deep dive] 14장 전역 변수의 문제점 14.1 변수의 생명 주기 - 메모리 공간이 확보(allocate)된 시점부터 메모리 공간이 해제(release)되어 가용 메모리 풀(memory pool)에 반환되는 시점까지 14.1.1 지역 변수의 생명주기 - 함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고 함수가 종료하며 소멸함 - 함수 내부에서 선언한 변수는 함수가 호출된 직후에 함수 몸체의 코드가 한줄씩 순차적으로 실행되기 이전에 자바스크립트 엔진에 의해 먼저 실행 - 지역 변수의 생명 주기는 함수의 생명 주기와 일치 - 지역 변수가 함수보다 오래 생존하는 경우도 있음 - 누군가가 메모리 공간을 참조하고 있으면 해제되지 않고 확보된 상태로 남아 있게됨 var x = 'global'; function foo () { //지역 변수 x는.. [Deep dive] 13장 스코프 13.1 스코프란? 스코프(scope) - 식별자가 유효한 범위 - 스코프(유효범위)를 통해 식별자인 변수 이름의 충돌을 방지하여 같은 이름의 변수를 사용 가능하게 함 식별자 결정 (identifier resolution) - 자바스크립트 엔진은 이름이 같은 두 개의 변수 중에서 어떤 변수를 참조해야 할 것인지 결정해야함 - 자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙 - 자바스크립트 엔진은 코드를 실행할 때 코드의 문맥(context)을 고려함 var x = 'global'; function foo() { var x = 'local'; console.log(x); //local } foo(); console.log(x); //global - 코드의 가장 바깥 영역의 선언된 x 변수는 어디서든 .. [Deep dive] 12장 함수(2) 12.5 참조에 의한 전달과 외부 상태 변경 - changeVal 함수는 매개변수를 통해 전달받은 원시 타입 인수와 객체 타입 인수를 함수 몸체에서 변경 //매개 변수 primitive는 원시 값을 전달받고, 매개변수 obj는 객체를 전달받음 function changeVal(primitive, obj) { primitive += 100; obj.name = 'Kim'; } //외부 상태 var num = 100; var person = {name : 'Lee'}; console.log(num); //100 console.log(person); // {name : "Lee"} //원시 값은 값 자체가 복사되어 전달되고 객체는 참조 값이 복사되어 전달된다. changeVal(num, person); //원.. [Deep dive] 12장 함수(1) 12.1 함수란? 함수 - 일련의 과정을 문(statement)로 구현하고 코드 블록을 감싸서 하나의 실행 단위로 정의 - 함수정의(function definition)을 통해 생성 - 함수 호출(function call) - 인수를 매개변수를 통해 함수에 전달하면서 함수의 실행을 명시적으로 지시 매개변수(parameter) - 함수 내부로 입력을 전달받는 함수 인수(argument) - 함수의 입력 반환값(return value) -함수의 반환 //f(x,y) = x+y function add(x,y) { return x+y; } //f(2,5) = 7 add(2,5); //7 12.2 함수 리터럴 - 자바스크립트의 함수는 객체타입의 값 - 함수도 함수 리터럴로 생성 가능 - 일반 객체와 달리 함수는 .. [Deep dive] 11장 원시 값과 객체의 비교 11.1 원시 값 11.1.1 변경 불가능한 값 - 원시 값(primitive type)은 변경 불가능한 값(immutable value) - 원시 값은 읽기 전용(read only)값으로서 변경 불가 - 원시 값 자체를 변경 불가 , 변수 값을 변경할 수 없다는 것이 아님 ( 변수는 언제든지 재할당을 통해 변수 값 변경 가능) - 데이터의 신뢰성을 보장 - 불변성 (immutability) - 변수 값을 변경하기 위해 원시 값을 재할당하면 새로운 메모리 공간을 확보하고 재할당한 값을 저장한 후, 변수가 참조하던 메모리 공간의 주소를 변경 11.1.2 문자열과 불변성 문자열 - 0개 이상의 문자로 이루어진 집합 - 원시 타입, 변경 불가능 - 유사 배열 객체이면서 이터러블이므로 배열과 유사하게 각 문자에.. 이전 1 ··· 3 4 5 6 7 8 9 ··· 13 다음