Note/JavaScript43 strict mode strict mode (엄격모드) : ES5부터 추가된 기능이다. JS 문법을 조금 더 엄격히 적용하여 오류를 미리 발견하고 의도하지 않은 동작을 방지하는 데에 도움이 된다. 저자는 strict mode보다 린트 도구 사용을 더 추천한다고 한다… strict mode 적용법 : 전역 앞 혹은 함수 몸체 앞 쪽에 'user strict'; 를 추가한다. 예시) 'use strict'; function name() { firstName = 'Jang'; // firstName이 선언되지 않았음을 알리는 오류 출력 } 단, 전역 strict mode를 사용하는 것은 다른 스크립트에 영향을 줄 수 있기 때문에 자제한다. 또한 함수에서도 즉시 실행 함수 단위로 적용하는 것이 좋다. strict mode로 알 수 .. 2024. 2. 7. 프로토 타입 객체지향 프로그래밍 : 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임. 추상화 : 프로그래밍을 하는 데에 필요한 정보(속성)만 추려서 표현하는 것. 객체 : 여러 정보(속성)의 값들을 하나의 단위로 묶은 자료구조. 상속 : 한 객체의 프로퍼티 혹은 메서드를 다른 객체가 그대로 사용할 수 있게 되는 것. 그리고 JS는 프로토타입을 기반으로 상속한다. 프로토타입 객체 : 프로토타입은 같은 구조를 찍어내기 위한 틀 같은 느낌이라고 생각한다. 새로 상속받은 한 객체의 내부는 프로토타입을 통해 상위 객체와 동일한 구조로 상속받아서 상위 객체와 같은 구조를 자신의 프로퍼티처럼 사용할 수 있다. 그리고 이러한 프로토타입은 [[Prototype]] 내부 슬롯 안에 저장되어 있다. __proto__ 프로퍼티 .. 2024. 2. 7. 일급 객체 일급 객체 § 일급 객체 조건 무명의 리터럴로 생성 가능. 즉, 런타임에 생성 가능. 변수 혹은 객체나 배열에 저장 가능. 함수의 매개변수에 전달 가능. 함수의 반환값으로 사용 가능. 예시) // 무명의 리터럴로 생성 가능 const day = function (num) { return ++day; }; const year = function (num) { return ++year; }; // 변수 혹은 객체나 배열에 저장 가능 const date = { day, year }; // 함수의 매개변수에 전달 가능 function nextDate(tmpFunc) { let num = 0; // 함수의 반환값으로 사용 가능 return function () { num = tmpFunc(num); return .. 2024. 2. 7. 객체 생성 1 생성자 함수를 통한 객체 생성 Object 생성자 const name = new Object(); 위와 같은 코드로 객체를 생성할 수 있다. 생성 후에는 여태 봐온 여러 방법으로 프로퍼티를 추가하거나 값을 할당하면 된다. 다양한 생성자 함수 String Number Boolean Function Array Date RegExp Promise 객체 리터럴의 문제점 : 하나의 객체만 생성한다. 다수의 객체 생성을 하기에는 프로퍼티를 일일히 명명해야 하기에 비효율적이다. 생성자 함수를 통한 객체 생성 function Circle(radius) { this.radius = radius; this.getDiameter = function() { return 2 * this.radius; }; } const cir.. 2024. 2. 5. 불변객체와 재귀함수 적용 불변 객체를 만들기 위해선 객체 내에 있는 객체까지 모두 Object.freeze를 적용해야 한다. 그러기 위해선 재귀 함수를 사용하여 좀 더 간편하게 처리할 수 있는데 이를 한번 해보려고 한다. 먼저 객체를 선언한다. const employee = { firstName : 'Jang', lastName : 'Soso', birthRegion : { // 객체 안의 객체 regionDo : 'Gyeongsang-buk-do', regionSi : 'Andong-si' } } 그리고 웹페이지 환경에서 객체 동결을 해보았다. Object.isFrozen(employee); // false - employee 객체 동결되지 않음 Object.freeze(employee); // 객체 동결 Object.isFr.. 2024. 2. 1. 프로퍼티 어트리뷰트 내부 슬롯, 내부 메서드 : JS 엔진의 내부 로직으로서, 개발자에게 직접적으로 접근 혹은 호출 권한이 주어지지 않는다. 하지만 일부 내부 슬롯과 내부 메서드는 간접적으로 접근 가능한 수단이 있다. 예시) const a = {}; a.[[Prototype]]; a.__proto__; //Object.prototype 프로퍼티 어트리뷰트 : 프로퍼티의 상태를 나타낸다. 프로퍼티를 생성할 때 JS엔진이 기본값으로 프로퍼티 어트리뷰트를 정의한다. § 프로퍼티 상태 요소 프로퍼티의 값 : [[Value]] 값 갱신 가능 여부 : [[Writable]] 열거 가능 여부 : [[Enumerable]] 재정의 가능 여부 : [[Configurable]] 간접적 접근 방법 예시) const person = { name.. 2024. 2. 1. 이전 1 2 3 4 5 6 7 8 다음 반응형