JavaScript에서는 모든 법적 기능을 객체 생성자로 사용할 수 있으며, 여기에는 시스템의 내장 기능과 사용자가 정의한 기능을 모두 포함합니다. 함수가 생성자로 실행되면이 속성은 기능 자체를 나타냅니다.
일반적으로 생성자는 값을 반환하지 않으며이 포인터로 전달 된 물체를 초기화하고 아무것도 반환하지 않습니다. 함수에 리턴 값이 있으면 반환 된 객체는 새 표현식의 값이됩니다. 공식적인 관점에서, 새 연산자 사용 여부에 관계없이 생성자 또는 일반 함수로 실행되는 함수 간의 유일한 차이.
위의 설명은 실제로 더 정확한 의미를 갖습니다. 기능은 두 가지 경우로 나뉩니다. 함수의 반환 값은 참조 유형과 값 유형입니다.
함수의 반환 값이 참조 유형 (배열, 객체 또는 함수)의 데이터 인 경우이 함수는 새 연산자와 함께 구성을 생성자로 실행하면 작업 결과가 반환 값으로 대체됩니다 이번에는 생성자 본체 가이 값에 있고, 손실되며, 반환 된 물체로 대체됩니다. 예를 들어:
코드 사본은 다음과 같습니다.
기능 테스트 ()
{
this.a = 10;
반환 기능 ()
{
반환 1;
}
}
경고 m = new test ();
var n = test ();
경고 (m); // 반환 후 폐쇄를 반환합니다
경고 (n); // 반환 후 폐쇄를 반환합니다
실행 결과 m과 n의 값은 동일하며, 둘 다 테스트 함수에 의해 반환 된 클로저이며, 이것에 의해 언급 된 객체와 이것의 할당 결과는 모두 폐기됩니다.
함수의 리턴 값이 값 유형 인 경우 기능이 새 연산자를 생성자로 사용하여 구성을 수행하면 반환 값이 폐기됩니다. 새로운 표현의 결과는 여전히 이것에 의해 언급 된 객체입니다.
코드 사본은 다음과 같습니다.
기능 테스트 ()
{
this.a = 10;
반환 1;
}
경고 m = new test ();
var n = test ();
경고 (m) // return [object]
경고 (n) // 반환 1.