심벌이란?심벌은 ES6에 도입된 7번째 데이터 타입으로 변경 불가능한 원시 타입의 값이며, 다른 값과 중복되지 않는 유일무이한 값이므로 주로 이름 충돌 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용한다. 심벌 값의 생성Symbol 함수심벌 값은 Symbol 함수를 호출해 생성한다. 이때 생성된 심벌 값은 외부로 노출되지 않아 확인할 수 없으며, 다른 값과 절대 중복되지 않는 유일무이한 값이다.// Symbol 함수를 호출하여 유일무이한 심벌 값을 생성한다.const mySymbol = Symbol();console.log(typeof mySymbol); // symbol// 심벌 값은 외부로 노출되지 않아 확인할 수 없다.console.log(mySymbol); // Symbol() 심..
프로퍼티
표준 빌트인 객체인 String은 원시 타입인 문자열을 다룰 때 유용한 프로퍼티와 메서드를 제공한다. String 생성자 함수표준 빌트인 객체인 String 객체는 생성자 함수 객체다. new 연산자와 함께 호출하여 String 인스턴스를 생성할 수 있다. String 생성자 함수에 인수를 전달하지 않고 new 연산자와 함게 호출하면 [[StringData]] 내부 슬릇에 비 ㄴ문자열을 할당한 String 래퍼 객체를 생성한다.const strObj = new String();console.log(strObj); // String {length: 0, [[PrimitiveValue]]: ""} String 생성자 함수의 인수로 문자열을 전달하면서 new 연산자와 함께 호출하면 [[StringData]] ..
표준 빌트인 객체인 Math는 수학적인 상수와 함수를 위한 프로퍼티와 메서드를 제공한다. Math는 생성자 함수가 아니기 때문에 Math는 정적 프로퍼티와 정적 메서드만 제공한다. Math 프로퍼티Math.PI원주율 PI값을 반환한다.Math.PI; // -> 3.141592653589793 Math 메서드Math.abs인수로 전달된 숫자의 절대값을 반환한다. 절대값은 반드시 0 도는 양수이어야 한다.Math.abs(-1); // -> 1Math.abs('-1'); // -> 1Math.abs(''); // -> 0Math.abs([]); // -> 0Math.abs(null); // -> 0Math.abs(undefined); // -> NaNM..
19.7 프로토타입 체인 자바스크립트는 객체의 프로퍼티(메서드 포함)에 접근할 때 해당 객체에 접근하려는 프로퍼티가 없다면 [[Prototype]] 내부 슬릇의 참조를 따라 자신의 부모 역할을 하는 프로토타입의 프로퍼티를 순차적으로 검색한다. 이를 프로토타입 체인이라 한다. 그렇다면 아래의 코드를 확인하자 function Person(name) { this.name = name; } // 프로토타입 메서드 Person.prototype.sayHello = function () { console.log(`Hi! My name is ${this.name}`); }; const me = new Person('Juhyeon'); // hasOwnProperty는 Object.prototype의 메서드다. con..
1. 일급 객체 일급 객체란 다음 조건을 만족하는 객체를 의미한다. 무명의 리터럴로 생성할 수 있다. => 런타임에 생성이 가능 변수나 자료구조(객체, 배열 등)에 저장할 수 있다. 함수의 매개변수에 사용할 수 있다. 함수의 반환값으로 사용할 수 있다. // 1, 2번 조건 const increase = (num) => { return ++num; }; const decrease = (num) => { return --num; }; // 2번 조건 const auxs = { yes: () => { console.log('yes') }, increase, decrease } // 3, 4번 조건 const makeCounter = (increase) => { let num = 0; return () => ..
10. 객체란? 객체는 변경이 가능한 값이며, 객체 타입은 다양한 타입의 값(원시 값 또는 다른 객체)을 하나의 단위로 구성한 복합적인 자료구조다. 원시값은 변경이 불가능한 값이며, 원시 타입은 단 한개의 값만 나타낸다. 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키(key)와 값(value)로 구성된다. Javascript에서 사용할 수 있는 모든 값은 프로퍼티의 값이 될 수 있다. 이 말은 자바스크립트의 함수도 값이 될 수 있다는 말이다. 함수가 프로퍼티 값으로 사용된다면 이는 메서드라 부른다. 자바스크립트의 함수는 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 일급 객체이므로 값으로 취급할 수 있다. 객체는 프로퍼티와 메서드로 구성된 집합체다. 프로퍼티 : 객체의 상태를..