JavaScript 에서 new 연산 자의 원리 예제 상세 설명
new 의 역할 은 구조 함 수 를 통 해 인 스 턴 스 대상 을 만 드 는 것 입 니 다.이 인 스 턴 스 와 원형 과 구조 함수 간 의 관 계 는 다음 그림 과 같 습 니 다.
일단 정 리 를 해 보도 록 하 겠 습 니 다.
new 작업 을 수행 할 때 다음 절 차 를 거 칩 니 다:
1.빈 대상 만 들 기
let obj = {}
2,빈 대상 의 내부 속성proto__ 구조 함수 의 prototype 속성 을 할당 합 니 다.
function Foo(num) {
this.number = num
}
obj.__proto__ = Foo.prototype
3.구조 함수 의 this 를 빈 대상 으로 가리 키 기
Foo.call(obj, 1)
4.구조 함수 내부 코드 실행아래 my New 함수 가 new 연산 자의 행동 을 모 의 했 습 니 다.
function myNew(func, ...args) {
let obj = {}
obj.__proto__ = func.prototype
let res = func.apply(obj, args)
return res instanceof Object ? res : obj
}
function Foo(num) {
this.number = num
}
let foo1 = myNew(Foo, 1)
console.log(foo1 instanceof Foo) // true
console.log(foo1.number) // 1
let foo2 = new Foo(2)
console.log(foo2 instanceof Foo) // true
console.log(foo2.number) // 2
위 에 서 는 instanceof 연산 자 를 통 해 구조 함수 의 반환 값 이 Object 의 인 스 턴 스 인지,즉 참조 형식 값 인지 여 부 를 판단 합 니 다.모든 참조 형식 값 은 Object 의 인 스 턴 스 이 고 Object 는 모든 참조 형식 값 의 기본 형식 이기 때 문 입 니 다.자,자 바스 크 립 트 의 new 연산 자 원리 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 JS new 연산 자 원리 에 관 한 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.