일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- cmarket
- https://www.daleseo.com/js-array-slice-splice/
- redux상태유지
- slice/splice/split
- 헷갈린다~
- https://lo-victoria.com/introduction-to-redux-toolkit-for-beginners
- 자바스크립트#JS#var#let#const#undefined#null
- 노드교과서
- Beesbeesbees
- 자바스크립트#조건문#문자열
- children vs childrenNodes
- https://developer-talk.tistory.com/299
- JS#3일차달리자#초반인데#시간금방~
- UX
- 자바스크립트#JS#slice#splice
- variable#function
- react
- @redux-toolkit
- CSS
- for~in/for~of
- 내장고차함수
- removeCookie
- 자바스크립트
- ㄷㅌ
- js
- toString#String
- https://dasima.xyz/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%A0%9C%EA%B3%B1-math-pow-%EA%B3%84%EC%82%B0/
- User Flow
- UI
- dom
- Today
- Total
Daily Front_Minhhk
[16~18장] 자바스크립트 딥다이브_프로퍼티 어트리뷰트, 생성자 함수에 의한 객체 생성, 함수와 일급 객체 본문
[16~18장] 자바스크립트 딥다이브_프로퍼티 어트리뷰트, 생성자 함수에 의한 객체 생성, 함수와 일급 객체
Minhhk 2023. 11. 23. 16:51프로퍼티 어트리뷰트
- 내부 슬롯
- 내부 메서드
→ 의사 프로퍼티와 의사 메서드다. 이 중 이중대괄호 로 감싼 이름들이다.
([[…]])
const a = {}
a.[[prototype]] // syntax error
// 간접적으로 접근가능
a.__prototype__ // Obeject.prototype
js 엔진은 프로퍼티를 생성할 때,
프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 기본 값으로 자동 정의한다.
프로퍼티 상태?
- 프로퍼티 값 - [[Value]]
- 값의 갱신 가능 여부 - [[Writable]]
- 열거 가능 여부 - [[Enumerable]]
- 재정의 가능 여부 - [[Configurable]]
const person = {
name : 'Kim'
}
// getOwnPropertyDescriptor(객체, 객체의 키) 를 통해 간접 확인 가능
console.log(Object.getOwnPropertyDescriptor(person, 'name'))
데이터 프로퍼티
- 키와 값으로 구성된 프로퍼티
접근자 프로퍼티
→ 자체적 값을 갖지 않고, 다른 데이터 프로퍼티의 값을 읽거나 저장할 때 호출되는 접근자 함수로 구성된 프로퍼티
- [[Get]] → 프로퍼티의 값을 읽을 때 호출되는 접근자
- [[Set]] → 데이터 프로퍼티의 값을 저장할 때 호출되는 접근자 함수
- [[Enumerable]]
- [[Configurable]]
_프로퍼티 정의_
Object.defineProperty()
→
const person = {
}
// getOwnPropertyDescriptor 로 불러오면 객체가 불러와짐
Object.defineProperty(person, 'name', {
value : 'Kim'
writable : true,
enumerable : true,
configurable : true,
})
// getOwnPropertyDescriptor 로 불러오면 undefined, false 뜸
// 디스크립터 프로퍼티 추가 안해서
Object.defineProperty(person, 'age', {
value : 555
})
객체 확장 금지_ 프로퍼티 추가 금지
Object.preventExtensible()
→
const person = {name : 'kim'}
// 확장 가능 여부 확인 isExtensible()
Object.isExtensible(person) // true
Object.preventExtensible(person)
console.log(Object.isExtensible(person)) // false
person.age = 20; // 무시됨
console.log(person) // {name : 'kim'}
객체 밀봉_ 읽기와 쓰기만 가능
Object.isSelead()
→
const person = {name : 'kim'}
// 밀봉된 상태가 아님
Object.isSelead(person) // false
Object.Selead(person) // 밀봉 함
console.log(Object.isSelead(person)) // true
객체 동결_ 동결된 객체는 추가, 삭제, 갱신, 어트리뷰트 재정의 등등 금지 → 읽기만 가능
Object.freeze()
→
const person = {name : 'kim'}
// 동결 상태 아님
Object.isFrozen(person) // false
Object.freeze(person) // 동결
console.log(Object.freeze(person)) // true
생성자 함수에 의한 객체 생성
- 생성자 함수에 의해 생성된 객체를 ‘인스턴스’
const person = new Object()
→ 프로퍼티 구조가 동일한 객체 여러개를 간편히 생성!
function Circle(radius) {
this.radius = radius;
this.getDiameter = () => 2 * this.radius;
}
const circle1 = new Circle(5); // 반지름이 5인 Circle 객체 생성
const circle2 = new Circle(10); // 반지름이 10인 Circle 객체 생성
console.log(circle1.getDiameter()); // 10
💡 바인딩 : 식별자와 값을 연결하는 과정
this
함수와 일급 객체
일급 객체?
- 무명의 리터럴 생성 가능
- 변수나 자료구조(객체, 배열)에 저장 가능
- 함수의 매개변수에 전달 가능
- 함수의 반환 값으로 사용 가능
함수가 일급 객체라는 건? → 함수를 객체와 동일하게 사용할 수 있다는 의미
- 객체 === 값, 함수 === 값 과 동일 취급 가능
차이점은? 호출의 차이!
- 일반 객체는 호출 불가, 함수 객체는 호출 가능!
💡 arguments 프로퍼티
함수 객체의 arguments 프로퍼티 값은 arguments 객체다.
함수 호출 시 전달된 인수들의 정보를 담고 있는 순회 가능한 유사 배열 객체..
함수 내부에서 지역변수 처럼 사용 → 외부에선 사용 불가
함수 호출 되면, 함수 몸체 내에서 암묵적으로 매개변수가 선언되고 undefined로 초기화된 이후 인수 할당.
→ 선언된 매개변수의 개수보다 인수가 적을 때?
// undefined 초기화 상태유지.
→ 초과된 매개변수 일 경우?
// 암묵적으로 arguments 객체 프로퍼티로 보관.
'Study > JS_딥다이브' 카테고리의 다른 글
[21~22장] 자바스크립트 딥다이브_빌트인 객체, this (0) | 2023.11.23 |
---|---|
[19장] 자바스크립트 딥다이브_프로토타입 (0) | 2023.11.23 |
[13~15장] 자바스크립트 딥다이브_스코프, 전역변수 문제점, let-const 와 블록 레벨 스코프 (0) | 2023.11.23 |
[12장] 자바스크립트 딥다이브_함수 (1) | 2023.11.23 |
[10~11장] 자바스크립트 딥다이브_객체, 원시값과 객체 비교 (0) | 2023.11.23 |