JavaScript/Deep Dive22 20 strict mode 암묵적 전역(implicit global)JS엔진은 암묵적으로 전역 객체에 x 프로퍼티를 동적 생성한다. x프로퍼티는 마치 전역 변수처럼 사용할 수 있다.function foo() { x = 10;}foo();console.log(x); // 10 린트 도구를 사용하자! (ESLint) strict mode 적용전역의 선두 or 함수 몸체의 선두에 'use strict'; 를 추가한다.왠만하면 전역에 쓰지말자. 라이브러리 사용하는 경우 오류 날 수도 있음함수 단위로도 쓰지말자. 번거롭다즉시 실행 함수로 감싼 스크립트 단위로 적용하는 것이 좋다. delete 연산자로 변수, 함수, 매개변수를 삭제하면 SyntaxError(function () { 'use strict'; var x = 1; dele.. 2024. 9. 28. 19 프로토타입 (2) instanceof 연산자이항 연산자로서 좌변에 객체를 가리키는 식별자, 우변에 생성자 함수를 가리키는 식별자를 피연산자로 받음우변의 피연산자가 함수가 아닌 경우 TypeError객체 instanceof 생성자 함수 우변의 생성자 함수의 prototype에 바인딩된 객체가 좌변의 객체의 프로토타입 체인 상에 존재하면 true그렇지 않으면 false로 평가 된다 // 생성자 함수function Person(name) { this.name = name;}const me = new Person('Lee');// 프로토타입으로 교체할 객체const parent = {};// 프로토타입의 교체Object.setPrototypeOf(me, parent);// Person 생성자 함수와 parent 객체는 연결되어.. 2024. 9. 28. 19 프로토타입 (1) 원시 타입(primitive type) 의 값을 제외한 나머지 값들 ( 함수, 배열, 정규 표현식 ) 은 모두 객체다. 객체지향 프로그래밍 - 여러 개의 독립적 단위, 즉 객체(object)의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임.추상화(abstraction) - 프로그램에 필요한 속성만 간추려 내어 표현하는 것객체(object) - 속성을 통해 여러 개의 값을 하나의 단위로 구성한 복합적인 자료구조객체지향 프로그래밍 - 객체의 상태(state)를 나타내는 데이터와 상태 데이터를 조작할 수 있는 동작(be-havior)을하나의 논리적인 단위로 묶어 생각한다.상태 데이터와 동작을 하나의 논리적인 단위로 묶은 복합적인 자료구조 동일한 메서드를 중복 소유하는 것은 메모리를 불필요하게 낭비.JS는 .. 2024. 9. 26. 18 함수와 일급 객체 일급 객체 조건런타임에 생성이 가능변수나 자료구조(객체, 배열)에 저장할 수 있다함수의 매개변수에 전달할 수 있다함수의 반한값으로 사용할 수 있다함수가 일급 객체라는 것은 함수를 객체와 동일하게 사용할 수 있다는 의미.함수는 값을 사용할 수 있는 곳(변수 할당문, 객체의 프로퍼티 값, 배열의 요소, 함수 호출의 인수, 함수 반환문)이라면 어디서든지 리터럴로 정의할 수 있으며 런타에 함수 객체로 평가됨.// 1. 함수는 무명의 리터럴로 생성할 수 있다.// 2. 함수는 변수에 저장할 수 있다.// 런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다.const increase = function (num) { return ++num;};const decrease = funct.. 2024. 9. 26. 17 생성자 함수에 의한 객체 생성 생성자 함수(constructor)new 연산자와 함꼐 호출하여 객체(인스턴스)를 생성하는 함수 여러가지 빌트인 생성자 함수// String 생성자 함수에 의한 String 객체 생성const strObj = new String('Lee');console.log(typeof strObj); // objectconsole.log(strObj); // String {"Lee"}// Number 생성자 함수에 의한 Number 객체 생성const numObj = new Number(123);console.log(typeof numObj); // objectconsole.log(numObj); // Number {123}// Boolean 생성자 함수에 의한 Boolean 객체 생성co.. 2024. 9. 25. 16 프로퍼티 어트리뷰트 내부 슬롯과 내부 메서드는 JS엔진의 내부 로직이므로 직접적으로 접근하거나 호출할 수 있는 방법을 제공하지 않는다.단, 일부에 한하여 간접적으로 접근할 수 있는 수단을 제공.[[Prototype]] 내부 슬롯의 경우, __proto__를 통해 간접적으로 접근 가능. JS엔진은 프로퍼티를 생성할 때 프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 기본값으로 자동 정의.프로퍼티 상태란 : 프로퍼티의 값(value), 값의 갱신 가능 여부(writerble), 열거 가능 여부(enumerable),재정의 가능 여부(configurable)를 말한다.# [[Value]], [[Writable]], [[Enumerable]], [[Configurable]]Object.getOwnPropertyDescriptor .. 2024. 9. 23. 이전 1 2 3 4 다음