instanceof : 객체의 출처를 체크 (프로토타입 체인)
function Person(name, age) {
this.name = name;
this.age = age;
}
const p1 = new Person("이이름", 40);
p1 instanceof Person;
-> true
-내장 생성자 함수 객체
-내장 객체
1.Math - 수학 관련 편의 메서드가 있는 객체
JSON(JavaScript Objdet Notation) - 자바스크립트 객체 표기법
{
"이름": "값",
"이름": "값",
...
}
.parse(): JSON 문자열 -> 자바스크립트 객체 변환
.stringify(): 자바스크립트 객체 -> JSON 문자열로 변환
호스트 객체 : 실행 환경에 따른 객체
-웹 브라우저 객체 - 웹브라우저의 기능과 관련된 객체
window
location 객체 - 브라우저의 주소와 관련된 기능, 정보
history 객체 - 브라우저의 방문 기록과 기능
screen 객체 - 화면 정보
navigator 객체 - 브라우저 환경 정보
document 객체 - 웹 문서를 다루는 객체
REPL(Read Evaluate Print Loop) - 명령행
자바 스크립트에 처음부터 포함된 내장 생성자
object.prototype
prototype
.toLocaleStirng()
Locale: 지역화
지역화에 맞게 변경
Object.getOwnPropertyDescriptor()
Object.getOwnPropertyDescriptors()
-> 상태 확인 가능
데이터 프로퍼티
const person ={
name: "김이름",
age: 30
};
Object.defineProperty(person, 'name', {writable: false});
-> 변경 불가
const person ={
name: "김이름",
age: 30,
showInfo : function() {
}
};
Object.defineProperty(person,'showInfo',{enumerable: false});
for (const key in person) {
console.log(key);
}
=>제외하면 함수는 출력되지 않음
-> 변경
Object.defineProperty
.defineProperties
참고) 속성 : 통제 기능 포함
Object.preventExtensions(); -> 새로운 속성 추가 불가
Object.seal(); -> 객체 밀봉, 삭제 불가, 속성 추가 불가
Object.freeze(); -> 객체 동결, 삭제 불가, 속성 추가 불가, 값 변경 불가
값을 직접 변경하는것은 좋지 않은 방법.
const schedule = {
_year : 2024,
_month : 3,
_day : 28,
set year(year) {
this._year = year;
},
get year() {
return this._year;
},
set month(month) {
this._month = month;
},
get month() {
return this._month;
},set day(day) {
this._day = day;
},
get day() {
return this._day;
},
}
이렇게 접근자 프로퍼티를 사용할경우 함수 내부에서 값을 처리할 수 있는 로직을 생성할 수 있다.
-enumerable
-configurable
const objA = {a:1, b:2};
const objB = {c:3, d:4};
Object.setPrototypeOf(objA, objB);
objA.c
->3
const person = {
name: "이이름",
age: 40
};
const person2 = person; //얕은 복사, 주소 복사
person === person2
->true
const person3 = Objcet.assign({}, person);
person3 === person;
->false
깊은 복사 가능
const person = {
name: "이이름",
age: 40
};
const person2 = {...person};
person === person2;
->false
const person2 = { ...person, age: 30};
//일부 값만 변경하고 싶을때
참고)
entries: 이름-값 쌍 조회
Map.Entry: 이름-값의 쌍
wrapper 생성자 객체
indexOf(...) : 문자열의 위치 번호 (0부터 시작 - 좌 -> 우)
lastIndexOf(...) : 문자열의 위치 번호 (우 -> 좌), 해당 문자열을 찾지 못할경우 -1 을 반환
wrapper 생성자 객체
NaN: Not a Number - 숫자가 아니다.
isNaN(...) : 숫자가 아니면 true, 숫자이면 false
참고) 원시 타입, 원시 값 - 재료가 되는 값
(숫자, 문자, 논리값, undefined, null, .. )
typeof num1 === number : 숫자 판별가능
parseInt() : 문자열, 실수 => 정수로 변환
parseFloat() :문자열 -> 실수로 변환
함수처럼 사용했을 경우 : 값에 대한 평가 -> 실제 논리값으로 변경
new Array -> const 변수 = [...]
배열 x
배열객체 o
const date = new Date();
생성한 날짜와 시간을 저장함
년도: getFullYear()
월: getMonth() / 0~11, 0->1월
일: getDate()
요일: getDay() 0~6 / 0 - 일요일
시간: getHours()
분: getMinutes()
초: getSeconds()
set도 가능
-getTime() : -1970.1.1 자정 -> 1000분의1초 단위로 카운트 수치 ->Epoch Time -> 초단위 -> Timestamp
Date.parse(문자열 날짜): 문자열 날짜 -> Date객체로 변환
Date.now(): 현재시각의 Epoch Time
1) 이번 달이 몇일로 끝나는지?
-다음달 1일 -1일 차감 -> 현재 달의 마지막 날짜
2) 이번 달 1일이 몇요일에 시작하는지?
-getDay(): 0~6
try {
} catch(e) {
}