시나리오 1:
var yx01 = new function() {return "center of Circle"};
alert(yx01);
시나리오 1 코드를 실행하면 "[object object]"가 반환됩니다. 이때 코드는 다음과 같습니다.
function anonymous class(){
return "center of Circle"
var yx01 = new anonymous class( );
alert(yx01); us 시나리오 1의 코드를 다음과 같이 변경합니다.
var yx01 = new function() {return new String("center of the Circle")}; 🎜>alert(yx01);
실행하면 "원의 중심"이 반환됩니다.
new 표현식 뒤의 생성자가 참조 객체(배열, 객체, 함수 등)를 반환하는 한, new가 생성한 익명 객체를 덮어씁니다(반환 없이). 실제로는 원래 유형을 정의하지 않은 상태로 반환하고 new
에 의해 생성된 익명 객체를 반환합니다. 왜냐하면 new String은 문자열 리터럴이 아닌 객체를 구성하고 new String(x)가 매개변수를 취하면 경고가 표시되기 때문입니다. 그것이 x를 반환할 때. 따라서 yx01은 새 String("원의 중심") 개체를 반환하고 경고 yx01은 "원의 중심"을 표시합니다.
시나리오 2:
var yx02 = function() {return "center of Circle"}();
alert(yx02); of Circle"이 표시됩니다. , 이때 코드는 다음과 같습니다.
var anonymous function = function() {return "center of Circle"};
yx02 = anonymous function();
alert(yx02); 당연히 yx02는 익명 함수의 실행 결과 값을 반환합니다. 즉, yx02는 "원의 중심"입니다.
물론 익명 함수의 실행 결과가 익명 객체일 수도 있습니다. 특정 공통 애플리케이션에 대해서는 "Javascript의 모듈 패턴
" 을 참조하세요.