> 웹 프론트엔드 > JS 튜토리얼 > JS_javascript 기술의 생성자에 대한 자세한 분석

JS_javascript 기술의 생성자에 대한 자세한 분석

WBOY
풀어 주다: 2016-05-16 16:56:17
원래의
1122명이 탐색했습니다.

JavaScript에서는 시스템 내장 함수와 사용자 정의 함수를 모두 포함하여 모든 적법한 함수를 객체의 생성자로 사용할 수 있습니다. 함수가 생성자로 실행되면 내부 this 속성은 함수 자체를 참조합니다.

일반적으로 생성자에는 반환 값이 없으며 this 포인터에 의해 전달된 개체를 초기화하고 아무것도 반환하지 않습니다. 함수가 값을 반환하는 경우 반환된 개체는 새 표현식의 값이 됩니다. 공식적인 관점에서 함수가 생성자로 실행되는지 아니면 일반 함수로 실행되는지의 유일한 차이점은 new 연산자를 사용하는지 여부입니다.

위 설명은 실제로 더 정확한 의미를 가지며, 함수가 값을 반환하는 상황을 함수의 반환 값이 참조 유형과 값 유형인 두 가지 상황으로 나눕니다.

함수의 반환 값이 참조 유형(배열, 객체 또는 함수)의 데이터인 경우 new 연산자를 생성자로 사용하여 이 함수를 생성하면 연산 결과가 다음으로 대체됩니다. 이때 생성자 본문의 this 값은 손실되고 반환된 개체로 대체됩니다. 예:

코드 복사 코드는 다음과 같습니다.

function test()
{
this.a=10;
return function()
{
return 1;
}
}
alert m=new test();
var n=test ();
alert(m);//return 후 클로저 반환
alert(n);//return 후 클로저 반환

값 합계 연산 결과 m n의 값은 동일하며, 테스트 함수가 반환한 클로저이고, this가 참조하는 객체와 this.a=10의 할당 결과는 모두 폐기됩니다.

함수의 반환 값이 값 유형인 경우 new 연산자를 생성자로 사용하여 함수를 생성하면 해당 반환 값이 삭제됩니다. 새 표현식의 결과는 여전히 이것에 의해 참조되는 객체입니다.
코드 복사 코드는 다음과 같습니다.

function test()
{
this .a=10;
return 1;
}
alert m=new test();
var n=test();
alert(m)//return [ 개체]
alert(n)//1을 반환합니다.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿