new는 도대체 뭘 한 거야?
3300 단어 new
//
function A(){
this.b = 1 //
// return
}
var obj = new A() //
console.log(obj) //{ b: 1 }
이 과정에서 new는 도대체 뭘 한 거예요?
다음은 분석 new A()입니다.
1. 구조 함수는prototype이라는 속성을 가지고 있다. 여기가 바로 A.prototype이다. 이 대상은 기본적으로 하나의 속성constructor가 있는데 그의 값은 이 구조 함수 A이다.
2.javascript는 빈 대상을 만들고 임시 대상으로 부르며 A.prototype의 모든 속성을 계승합니다.
3. A()가 실행을 시작하면 A의this가 이 임시 대상을 가리키도록 설정한 다음에 함수 A를 계속 실행한다.
4. 되돌아오는 문장이나 되돌아오는 대상의 문장이 없다면 되돌아오는 것이 이 임시 대상이다. 그렇지 않으면 되돌아오는 우리가 되돌아오는 대상이다.
구조 함수로 대상을 실례화할 때 되돌아오는 대상은 계승하는 누구입니까?
먼저 정확한 해석을 해 주시고요.
1. 되돌아오는 문장이 없거나 대상의 문장이 되돌아올 때 되돌아오는 대상은 a.protype에서 계승된다.
2. 하나의 대상으로 되돌아갈 때 주의, 되돌아오는 대상은 우리가 만든 대상이기 때문에 구조 함수의 원형을 계승한다.
객체가 반환되지 않은 경우:
//
function A(){
this.b = 1
}
var obj = new A()
console.log(Object.getPrototypeOf(obj) === A.prototype) //true
객체 반환 시
//
function A(){
return { b:1}
}
var obj = new A()
console.log(Object.getPrototypeOf(obj) === A.prototype) //true
console.log(Object.getPrototypeOf(obj) === Object.prototype) //true
이미 실례화된 대상의 구조 함수 원형을 수정할 때 이 실례화 대상에 영향을 주지 않는다
여기에 이 현상을 설명할 실례가 하나 있다
function A(){
this.b = 1
}
var obj = new A()
A.prototype = {b:10}
console.log(obj.b) //1
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
📋 모던 자바스크립트 Deep Dive | 17장 생성자 함수에 의한 객체 생성new 연산자와 Object 생성자 함수를 호출하면 빈 객체를 생성해서 반환한다. 생성자 함수란 new 연산자와 함께 호출하여 객체를 생성하는 함수를 말한다. 마치 객체(인스턴스)를 생성하기 위한 템플릿(클래스)처럼...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.