목록분류 전체보기 (53)
동그란 도그린
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..
자바스크립트는 프로토타입 기반의 객체 지향 프로그래밍 언어 자바스크립트를 이루고 있는 거의 “모든 것”이 객체 📍 객체 지향 프로그래밍 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임 추상화 : 다양한 속성 중에서 프로그램에 필요한 속성만 간추려 표현하는 것 객체 속성을 통해 여러 개의 값을 하나의 단위로 구성한 복합적인 자료구조 상태 데이터(프로퍼티)와 동작(메서드)를 하나의 논리적 단위로 묶은 복합적인 자료구조 📍 상속과 프로토타입 상속 어떤 객체의 프로퍼티 또는 메서드를 다른 객체가 상속받아 사용하는 것 자바스크립트는 프로토타입 기반으로 상속 구현 코드 재사용 관점에서 유용 📍 프로토타입 객체 프로토타입 객체 객체 간 상속을 구현하기 위해 사용됨 프로토타입 : 어떤 객체의 상위 객체(부모)..
📍 일급 객체 무명의 리터럴로 생성 가능(런타임에 생성 가능) 변수나 자료구조에 저장 가능 함수의 매개변수에 전달 가능 함수 반환 값으로 사용 가능 함수가 일급 객체라는 것은 함수를 객체와 동일하게 사용 가능하다는 의미 📍 함수 객체의 프로퍼티 Object. prototype 객체의 프로퍼티는 모든 객체가 상속받아 사용 가능 arguments 프로퍼티 arguments 객체는 함수 호출 시 전달된 인수들의 정보를 담고 있는 순회 가능한 유사 배열 객체 함수 내부에서 지역 변수처럼 사용 함수 외부에서 참조 불가 매개변수의 개수를 확정할 수 없는 가변 인자 함수를 구현할 때 유용 배열 형태이지만, 실제로 배열이 아닌 유사 배열 객체 🔅 유사 배열 객체 : length 프로퍼티를 가진 객체로, for문으로 순..
📍 Object 생성자 함수 new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환 🔅 생성자 함수 : new 연산자와 함께 호출, 객체(인스턴스)를 생성하는 함수 📍 생성자 함수 객체 리터럴에 의한 객체 생성 방식은 단 하나의 객체만 생성 ⇒ 동일한 프로퍼티를 갖는 객체를 여러개 생성해야 하는 경우에는 매번 같은 프로퍼티를 기술해야 함 ⇒ 비효율적 생성자 함수에 의한 객체 생성 방식은 객체 생성 템플릿(클래스)처럼 생성자 함수를 사용하여 프로퍼티 구조가 동일한 객체 여러 개를 간편하게 생성 가능 🔅 this : 객체 자신의 프로퍼티나 메서드를 참조하기 위한 자기 참조 변수 new 연산자와 함께 생성자 함수를 호출하지 않으면 생성자 함수가 아니라 일반 함수로 동작 생성자 함수가..
15-1장. var 키워드로 선언한 변수의 문제점var 키워드로 선언한 변수는 중복 선언 가능함var x = 1;var y = 1;// 초기화문이 있는 변수 선언문은 자바스크립트 엔진에 의해 var 키워드가 없는 것처럼 동작var x = 100;// 초기화문이 없는 변수 선언문은 무시됨var y;console.log(x); // 100console.log(y); // 1 var 키워드의 스코프var 키워드로 선언한 변수는 함수의 코드 블록만을 지역 스코프(변수가 유효한 범위)로 인정⇒ 함수 외부에서 var 키워드로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역 변수가 됨⇒ 전역 변수를 남발할 가능성을 높인다var i = 1;// i는 전역 변수, 이미 선언된 i가 있으므로 중복 선언됨for(va..
14-1장. 변수의 생명 주기전역 변수의 무분별한 사용은 위험함 ⇒ 전역 변수를 반드시 사용해야 할 이유가 있는 게 아니라면 지역 변수를 사용해야 함 지역 변수의 생명 주기변수는 생성되고 소멸되는 생성 주기가 있음전역 변수의 생명 주기 : 어플리케이션의 생명 주기와 같음함수 내부에서 선언된 지역 변수의 생명 주기 : 함수가 호출되면 생성되고 함수가 종료하면 소멸됨 변수의 선언은 코드가 한 줄씩 순차적으로 실행되는 시점인 런타임에 실행되는 것 X, 런타임 이전 단계에서 자바스크립트 엔진에 의해 먼저 실행 O함수 내부에서 선언한 변수 ⇒ 함수가 호출된 직후에 함수 몸체의 코드가 한 줄씩 순차적으로 실행되기 이전에 자바스크립트 엔진에 의해 먼저 실행됨함수 내부에서 선언된 지역 변수⇒ 함수가 호출되어 실행되는 ..
13-1장. 스코프란?스코프란?모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정됨⇒ 이를 ‘스코프’라고 함‘스코프’는 식별자가 유효한 범위를 말함프로그래밍 언어에서는 스코프(유효 범위)를 통해 식별자인 변수 이름의 충돌을 방지하여 같은 이름의 변수를 사용할 수 있게 함 ⇒ ‘스코프’는 네임스페이스임var 키워드로 선언한 변수는 같은 스코프 내에서 중복 선언이 허용됨 ⇒ 의도치 않게 변수 값이 재할당되어 변경되는 부작용을 발생시킴let이나 const 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용하지 않음function foo() { var x = 1; var x = 2; // 변수값이 2..
📍 함수 자바스크립트의 함수는 객체 타입의 값 자바스크립트는 함수를 호출하기 위해 함수 이름과 동일한 이름의 식별자를 암묵적으로 생성 후 그 식별자에 객체를 할당 ⇒ 함수는 함수 이름이 아닌 함수 객체를 가리키는 식별자로 호출 함수 정의 방식 함수 선언문 function add (x,y) { return x+y; } 함수 표현식 var add = function (x,y) { return x+y; }; Function 생성자 함수 var add = new Function (’x’, ‘y’ ‘return x+y’); 화살표 함수 (ES6) var add = (x, y) ⇒ x+y; 함수 리터럴 function 키워드, 함수 이름, 매개변수 목록, 함수 몸체로 구성 함수 이름 생략 가능 (익명 함수) // ..