JavaScript
-
[JavaScript]프로토타입-3JavaScript 2023. 1. 12. 17:06
직접 상속 Object.create에 의한 직접 상속 Object.create(~~)는 ~~를 프로토타입으로 하는 객체를 만들라는 명령어 입니다. // 프로토타입이 null인 객체를 생성한다. 생성된 객체는 프로토타입 체인의 종점에 위치한다. // obj → null let obj = Object.create(null); console.log(Object.getPrototypeOf(obj) === null); // true // Object.prototype을 상속받지 못한다. console.log(obj.toString()); // TypeError: obj.toString is not a function // obj → Object.prototype → null // obj = {};와 동일하다. o..
-
[JavaScript]프로토타입-2JavaScript 2023. 1. 5. 19:02
프로토타입의 생성 시점 프로토타입은 생성자 함수가 생성되는 시점에 더불어 생성됩니다. 사용자 정의 생성자 함수와 프로토타입 생성 시점 // 함수 정의(constructor)가 평가되어 함수 객체를 생성하는 시점에 프로토타입도 더불어 생성된다. console.log(Person.prototype); // {constructor: ƒ} // 생성자 함수 function Person(name) { this.name = name; } 위 예제와 같이 전역 컨텍스트가 실행될 때 함수 선언문이 먼저 실행되므로(이 때 프로토타입도 같이 생성된다.) console.log 에 프로토타입이 출력될 수 있다. 하지만 화살표함수와 같이 생성자함수가 없는 함수는 프로토타입도 미리 생성되지 않는다. // 화살표 함수는 non-c..
-
[JavaScrip] 프로토타입 - 1JavaScript 2023. 1. 3. 17:52
자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어이다. 자바스크립트는 클래스 기반 객체지향 프로그래밍 언어보다 효율적이다. 자바스크립트는 원시 타입의 값을 제외한 ‘모든 것’이 객체라고 할 수 있다. 객체지향 프로그래밍 객체지향 프로그래밍은 독립적 단위인 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임을 말합니다. 객체지향 프로그래밍은 실체를 인식하는 철학적 사고를 프로그래밍에 접목하려는 시도에서 시작합니다. 따라서, 실제는 특징이나 성질을 나타내는 속성을 가지고 있고, 이를 통해 인식하거나 구별합니다. 예를 들어, 사람은 이름, 주소, 성별 등 다양한 속성을 갖습니다. 이름 xx 성별 xx 나이 xx 인 사람으로 구체적인 속성을 표현하..
-
[JavaScrip] 함수와 일급 객체JavaScript 2022. 11. 24. 16:09
일급객체 일급객체는 다음 조건을 모두 만족하는 객체를 말한다. 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다. 변수나 자료구조(객체, 배열 등)에 저장할 수 있다. 함수의 매개변수에 전달할 수 있다. 함수의 반환값으로 사용할 수 있다. 자바스크립트의 함수는 위 조건을 모두 만족하므로 일급 객체이다. // 1. 함수는 무명의 리터럴로 생성할 수 있다. // 2. 함수는 변수에 저장할 수 있다. // 런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다. const increase = function (num) { return ++num; }; const decrease = function (num) { return --num; }; // 2. 함수는 객체에 저..
-
[JavaScript] 생성자 함수에 의한 객체 생성JavaScript 2022. 11. 23. 14:30
Object 생성자 함수 new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성할 수 있습니다. 이후 빈 객체에 프로퍼티 및 메서드를 추가할 수 있습니다. // 빈 객체의 생성 const person = new Object(); // 프로퍼티 추가 person.name = 'Lee'; person.sayHello = function () { console.log('Hi! My name is ' + this.name); }; console.log(person); // {name: "Lee", sayHello: ƒ} person.sayHello(); // Hi! My name is Lee JavaScript는 Object 생성자 이외에도 String, Numbe..
-
[백준]1132 : 합(javascript)JavaScript 2022. 7. 25. 21:55
https://www.acmicpc.net/problem/1132 1132번: 합 N개의 수가 주어진다. 이 숫자는 모두 자연수이고, 알파벳 A부터 J가 자리수를 대신해서 쓰여 있다. 이 알파벳은 모두 한 자리를 의미한다. 그리고, 각 자리수는 정확하게 알파벳 하나이다. 0으로 www.acmicpc.net 문제 N개의 수가 주어진다. 이 숫자는 모두 자연수이고, 알파벳 A부터 J가 자리수를 대신해서 쓰여 있다. 이 알파벳은 모두 한 자리를 의미한다. 그리고, 각 자리수는 정확하게 알파벳 하나이다. 0으로 시작하는 수는 없다. 이때, 가능한 수의 합 중 최댓값을 구해보자. 입력 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 각 수가 주어진다. 수의 길이는 최대..
-
[JavaScript] 프로퍼티 어트리뷰트JavaScript 2022. 7. 10. 21:53
내부 슬롯과 내부 메서드 내부 슬롯 : ECMAScript 사양에서 이용하는 의사 프로퍼티이다. 내부 메서드 : ECMAScript 사양에서 이용하는 의사 메서드이다. 이중 대괄호([[..]])로 감싼 이름이 내부 슬록과 내부 메서드이다. 내부 슬롯과, 내부 메서드는 자바스크립트 엔진의 내부 로직이므로 원칙적으로는 직접적으로 접근하거나 호출할 수 있는 방법을 제공하지 않는다. 예를 들어, 모든 객체는 [[Prototype]]이라는 내부 슬롯을 갖는다. [[Prototype]]의 내부 슬롯은 proto를 통해 간접적으로 접근할 수 있다. const o = {}; // 내부 슬롯은 자바스크립트 엔진의 내부 로직이므로 직접 접근할 수 없다. o.[[Prototype]] // -> Uncaught SyntaxE..
-
[JavaScript] let, const 키워드와 블록 레벨 스코프JavaScript 2022. 7. 9. 00:01
var 키워드로 선언한 변수의 문제점 ES5까지는 변수를 선언할 수 있는 유일한 방법이 var였습니다. var 키워드는 다음과 같은 문제점이 존재합니다. 변수 중복 선언 사용 var x = 1; var y = 1; // var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용한다. // 초기화문이 있는 변수 선언문은 자바스크립트 엔진에 의해 var 키워드가 없는 것처럼 동작한다. var x = 100; // 초기화문이 없는 변수 선언문은 무시된다. var y; console.log(x); // 100 console.log(y); // 1 함수 레벨 스코프 var x = 1; if (true) { // x는 전역 변수다. 이미 선언된 전역 변수 x가 있으므로 x 변수는 중복 선언된다. // 이는..