반응형
반응형
자바스크립트 객체 분류 표준 빌트인 객체 호스트 객체 사용자 정의 객체 표준 빌트인 객체 Math, Relect, JSON 을 제외한 표준 빌트인 객체는 생성자 함수 객체다 . 생성자 함수 객체는 프로토타입 메서드 와 정적 메서드를 제공 아닌 객체는 정적 메서드만 제공 래퍼객체 문자열,숫자, 불리언 값에 대해 객체처럼( 마침표 표기법) 접근하게되면 생성되는 임시객체 문자열,숫자,불리언,심볼 이외값들은 래퍼객체 생성을 안함 / 생성할시 에러발생 래퍼객체의 동작방식 마침표표기법으로 인해 래퍼 객체 생성 내부슬롯 [[~Data]] 에 데이터값을 저장 객체 처리가 종료되면 내부슬롯에서 원시값 되돌려주고 가비지 셀렉션이됨 전역객체 코드가 실행 되기 이전에 자바스크립트 엔진에 의해 생성되는 최상위 객체 전역객체의 ..
use strict 란? 자바스크립트의 문법을 좀더 엄격하게 적용해 오류 발생시킬수있는 코드들을 명시적으로 에러를 발생시키는것 사용법 코드 전문에 ‘use strict’; 를 추가 하거나 함수몸체의 선두에 추가한다. 주의사항 전역에 적용하지말기 함수 단위로 적용하지말기 외부서브파티 앱에서 non-strict mode 일수있기때문에 즉시실행함수로 감싸 사용하는것이 바람직함 strict mode 가 발생시키는 에러 선언하지 않는 변수 참조시 에러 delete 연산자로 변수 , 함수 , 매개변수 삭제시 에러 매개 변수의 이름을 중복사용시 에러 with 문 사용시 에러 strict mode 적용에 의한 변화 일반 함수 내부에서는 this 사용시 undefined 를반환 매개변수에 전달된 인수를 재할당해도 반영안됨
프로토 타입을알기전에 객체지향 프로그래밍에대해서 알아보자 자바스크립트는 객체 기반의 프로그래밍 언어이며 원시값을 제외한 나머지값들이 모두 객체이다. 객체지향언어는 특징이나 성질을 나타내는 속성을 통해 여러개의 값을 하나의 단위로 구성한 객체로 이루어져있고 그 객체의 상태 , 동작을 하나의 논리적인 단위로 묶어서 생각한다. 각 객체는 독립적인 부품으로 볼수있지만 다른 객체와의 관계성을 가질수있다. 상속이란? 상속은 객체 지향 프로그래밍 핵심 개념으로 어떤 객체의 프로퍼티 또는 메서드를 다른 객체가 상속받아서 그래도 사용하는 것을 말한다. 자바스크립트는 프로토타입 을 기반으로 상속을 구현하여 불필요한 중복을 제거한다 그방법으로 기존의 코드를 적극 재사용하게되는데 이는 개발비용을 현저히 줄일수있는 잠재력이다...
다음 조건을 만족하는 객체를 일급객체라 한다. 무명의 리터럴로 생성할 수 있다. 즉 런타임에 생성이 가능하다. 변수나 자료구조( 객체, 배열 ) 에 저장할수있다. 함수의 매게 변수에 전달할수있다. 함수의 반환값으로 사용할수있다. 자바스크립트의 함수는 일급객체이다. // 1. 무명의 리터럴로 생성가능하다 // 2. 변수, 자료구조에 저장가능하다. const incresase = function (num) { return ++num;; } //3. 함수의 매개변수에 전달할 수 있다. //4. 함수의 반환값으로 사용할수있다. function makeCounter(aux) { let num = 0; return function () { num = aux(num) return num; } } 함수가 일급 객체라는..
객체 리터럴로 객체를 생성하는것이 일반적이나 생성자 함수로도 객체를 생성하는 방법이있다. 생성자 함수란 new 연산자와 함께 호출하여 객체를 생성하는 함수이다. 생성자 함수에의해 생성된 객체를 인스턴스라 한다. 이방법의 장단점을 알아보자 Object 생성자 함수 new Object() 함수를통해 빈객체를 생성할수있고 이후에 프로퍼티를 추가하여 객체를 완성할수있다. 물론 빈객체를 생성하지않고 프로퍼티 값을 넣을수있긴하다. // 생성자 함수를 통해 빈객체 생성 const person = new Object(); // 빈객체에 프로퍼티들을 동적으로 추가 person.name = "jaehyun"; person.sayHello = function () { console.log(`Hi My name is ${th..
프로토타입 프로토 타입은 어떤 객체의 상위객체(부모 객체)의 역할을 하는 객체이다. 프로터 타입은 하위 객체에게 자신의 프로퍼티와 메서드를 상속한다. 하위 객체는 자신의 프로퍼티 또는 메서드 인것처럼 자유롭게 사용할수있다. 프로퍼티 정의 프로퍼티 정의란 새로운 프로퍼티를 추가하면서 프로퍼티 어트리뷰트를 명시적으로 정의하거나 , 기존 프로퍼티 의 어트리뷰트를 재정의 하는것을 말한다. object.defineProperty 메서드를 사용하면 퍼르퍼티의 어트리뷰트를 정의할수있다. 인수로는 객체의 참조 , 데이터 프로퍼티의 키인 문자열, 프로퍼티 디스크립터 객체를 전달한다. // 데이터 프로퍼티 정의 // Object.defineProperty 메서드는 한번에 하나의 프로퍼티만 정의할수있다. Object.def..