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

좋은 웹페이지 즐겨찾기