목록2024/12 (25)
nhyunzi
자바스크립트는 객체 기반의 프로그래밍 언어이며 자바스크립트를 이루는 거의 모든것이 객체다.(원시 타입을 제외한 함수, 배열, 정규 표현식등은 전부 객체이다.) C++이나 자바같은 클래스 기반 객체지향 프로그래밍 언어의 특징 클래스와 상속, 캡슐화를 위한 키워드public,private,protected 등이 없어 객체지향 언어가 아니라고 오해하는 경우도 있지만,자바스크립트는 클래스 기반객체지향 프로그래밍 언어보다 효율적이며 더 강력한 프로토타입 기반의 객체지향 프로그래밍 언어이다. ES6에서 클래스가 도입되었지만 ES6의 클래스도 기존 프로토타입 기반 객체지향 모델을 폐지하고 새로운 객체지향 모델을 제공하지는 않는다. 사실 클래스도 함수이며, 기존 프로토타입 기반 패턴의 문법적 설탕이라 볼 수 있다.사실..
18.1 일급 객체무명의 리터럴로 생성할 수 있다. 런타임에 생성 가능하다. 변수나 자료구조(객체, 배열 등)에 저장할 수 있다. 함수의 매개변수에 전달할 수 있다. 함수의 반환값으로 사용할 수 있다.함수는 위의 조건을 모두 만족하기 때문에 일급 객체다.//1. 무명의 리터럴로 생성//2. 변수에 저장할 수 있다.const increase = function(num){ return ++num;};const decrease = function(num){ return --num;}; //2. 객체에 저장할 수 있다. const predicates = { increase, decrease }; //3. 함수의 매개변수에 전달할 수 있다.//4. 함수의 반환값으로 사용할 수 있다.function makeCo..
17.1 Object 생성자 함수생성자 함수란 new 연산자와 함께 호출되어 인스턴스를 생성하는 함수를 말한다. new 연산자와 함께 Objcet 생성자 함수를 호출하며 객체를 생성해 반환한다.만약 new 연산자를 함께 호출하지 않으면 일반 함수로 동작한다.// 빈 객체 생성 const person = new Object(); person.name = 'Ahn';person.sayHello = function(){ console.log('Hi! My name is '+this.name);// Object 말고도 String, Number, Boolean, Function, Array, Date, RegExp, Promise 등의 빌트인 생성자 함수 제공//타입은 전부 objectconst strObj ..
16.5 객체 변경 방지자바스크립트는 객체의 변경을 방지하는 다양한 메서드를 제공한다.각 메서드들은 변경을 금지하는 강도가 다르다.객체 확장 금지Object.preventExtensions는 객체의 추가를 금지한다. 동적 추가와 Object.defineProperty 모두 금지한다. 확장여부는 Object.isExtensible()을 통해 알 수 있다.const person = { name : 'Ahn'}; console.log(Object.isExtensible(person)); //true Object.preventExtensions(person); console.log(Object.isExtensible(person)); //false person.name = 'Kim'console.log(pers..
15.1 var 키워드로 선언한 변수의 문제점ES5까지 변수를 선언할 수 있는 유일한 방법은 var 키워드를 사용하는것var 키워드로 선언된 변수는 다음과 같은 특징이 있어 주의를 기울이지 않으면 심각한 문제를 발생시킴변수 중복 선언 허용var 키워드로 선언한 변수는 중복 선언이 가능만약 동일한 이름의 변수가 이미 선언되었음을 모르고 변수를 중복 선언하며 값까지 할당한다면 의도하지는 않았지만 먼저 선언된 변수값이 바뀌어 버리는 부작용 생김var x = 1;var y = 1; var x = 100; //초기화 문이 있는 변수 선언문은 자바스크립트 엔진에 의해 var 키워드가 없는것처럼 동작var y; //초기화 문이 없는 변수 선언문은 무시 console.log(x); //100console.log(y);..
역 변수의 무분별한 사용은 위험하기 때문에 되도록 지역 변수를 사용해야 한다.그렇기 때문에 전역 변수의 문제점과 사용을 억제하는 방법을 이번 장에서 알아보도록한다. 14.1 변수의 생명 주기14.1 변수의 생명 주기변수는 생성되고 소멸되는 생성주기가 있다. 지역 변수의 생명주기지역 변수는 자신이 선언된 함수가 호출되면 생성되고 함수가 종료하면 소멸한다.즉, 지역 변수의 생명 주기는 함수의 생명 주기와 일치한다.function foo(){ var x = 'local'; console.log(x); // local return x;} foo();console.log(x); //ReferenceError: x is not defined 함수 내부에서 선언한 변수는 함수가 호출된 직후 함수 몸체의 코드가 ..