자바스크립트 객체의 분류 표준 빌트인 객체모든 실행환경에서 언제나 사용가능함 ECMAScript 사양에 정의된 객체 호스트 객체브라우저에서는 WebAPI, NodeJS에서는 고유의 API를 제공함 실행환경에 따라 다르게 제공되는 객체 사용자 정의 객체 사용자가 직접 정의한 객체 표준 빌트인 객체 String, Number, Boolean, Function, Array, Date 등 원시값과 래퍼 객체 원시값 역시 객체처럼 동작하는데, 원시값을 객체처럼 사용할 경우 JS엔진이 암묵적으로 연관된 객체(래퍼 객체)를 생성하여 생성된 객체로 프로퍼티에 접근하거나 메서드를 호출하고 다시 원시값으로 돌린다. 문자열에 대해 마침표 표기법으로 접근하면, 래퍼객체인 String객체로 인스턴스를 생성하고, 문자열은 래퍼 ..
객체
일급객체 무명의 리터럴로 생성가능 → 런타임에 생성 가능 변수나 자료구조에 저장할 수 있음 함수의 매개변수에 전달할 수 있음 함수의 반환값으로 사용 가능함 함수와 객체를 동일하게 사용할 수 있음 즉, 함수는 값을 사용하는 곳에는 어디든 리터럴로 정의할 수 있고, 이를 런타임에 함수객체로 평가하게 됨 가장 큰 특징 매개변수에 전달할 수 있음 함수의 반환값으로 사용가능 함수 객체의 프로퍼티 Object.getOwnPropertyDescriptors(f); {length: {…}, name: {…}, arguments: {…}, caller: {…}, prototype: {…}} arguments: {value: null, writable: false, enumerable: false, configurable..
일급객체 무명의 리터럴로 생성가능 → 런타임에 생성 가능 변수나 자료구조에 저장할 수 있음 함수의 매개변수에 전달할 수 있음 함수의 반환값으로 사용 가능함 함수와 객체를 동일하게 사용할 수 있음 즉, 함수는 값을 사용하는 곳에는 어디든 리터럴로 정의할 수 있고, 이를 런타임에 함수객체로 평가하게 됨 가장 큰 특징 매개변수에 전달할 수 있음 함수의 반환값으로 사용가능 함수 객체의 프로퍼티 Object.getOwnPropertyDescriptors(f); {length: {…}, name: {…}, arguments: {…}, caller: {…}, prototype: {…}} arguments: {value: null, writable: false, enumerable: false, configurable..
원시값 변경 불가능한 값 원시타입의 값은 변경 불가능한 값이다. 한번 생성된 원시값은 읽기전용이라 변경이 불가능하다. 값과 변수 변수는 변할 수 있지만, 값은 그렇지 않을 수 있다. 변수가 가르키는 원시값의 주소가 바뀌는 것이다. var p; var p; p=10; undefined는 가비지 컬렉터가 제거하기 전까지는 메모리 어딘가에 계속해서 존재하게 된다. 불변성을 갖는 원시값을 할당한 변수는 재할당 이외에 변수값을 변경할 수 있는 방법이 없다. 문자열과 불변성 문자열 타입은 1글자당 2바이트의 메모리 공간이 필요하다. 숫자는 8바이트로 고정이다. 따라서 10000은 8바이트이지만, ‘10000’은 10바이트가 필요하다. 문자열의 내용이 바뀌는 경우에도 불변성이 적용된다. var str='Hello';..
객체란? JS는 객체기반의 프로그래밍언어 원시값을 제외한 모든 것들은 객체임 객체타입 객체타입은 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조로 변경가능한 값임 원시타입 변경 불가능한 값임 객체의 구조 0개 이상의 프로퍼티로 구성된 집합 프로퍼티 key-value 쌍으로 구성됨 JS에서 사용하는 모든 값은 프로퍼티 값이 될 수 있음 객체의 상태를 나타내는 값 메서드 js의 함수는 일급 객체이므로 값으로 취급할 수 있음 따라서 함수역시 프로퍼티로 사용이 가능하며, 이를 메서드라고 부름 프로퍼티를 참조하고 조작하는 동작을 말함 객체의 생성 객체 생성의 방법 객체리터럴 Object 생성자 함수 생성자 함수 Object.create 메서드 클래스(ES6) 객체 리터럴에 의한 생성 가장 일반적인 방법..