JavaScript:new 함수 와 직접 호출 함수 의 차이 분석
function Test() {
this.name = 'Test';
return function() { return true; }
}
var test = new Test(); // 여기 테스트 가 뭐 예요?Test 대상 인가요?땡!여기 test 는 함수―Test 에서 돌아 오 는 function(){return true;}입 니 다.이때 new Test()는 Test()와 같 습 니 다.주의 하 세 요.같은 효 과 를 가 집 니 다.new Test()==Test()를 사용 하여 둘 이 같은 지 여 부 를 판단 하면 false 로 돌아 갑 니 다.자바 script 때 문 입 니 다. Object 와 Function 에 대한 비 교 는 인용 에 기초 한 것 이다.상기 상황 에서 이들 의 차 이 를 더욱 명확 하 게 구분 하기 위해 다음 코드 를 계속 보 세 요.
function Test() {
this.name = 'Test';
return 'Test';
}
var fnT = Test();
var newT = new Test();
분명히 fnT 는 문자열 Test 입 니 다.그럼 new T 는 요?허허,첫 번 째 사례 에 현혹 되 었 나?사실,이때 newT 는 Test 대상 입 니 다.name 이라는 속성 이 있 는데 그 값 은 문자열 Test 입 니 다.위의 두 단락 코드 를 통 해 우 리 는 함수 가 일반적인 의미 의 값 형식(Number,String,Boolean)으로 되 돌아 갈 때 new 함 수 는 이 함수 의 인 스 턴 스 대상 을 되 돌려 주 고 함수 가 인용 형식(Object,Array,Function)으로 돌아 가면 new 함 수 는 함수 가 직접 호출 한 결과 와 같 을 것 이라는 추측 을 얻 을 수 있 습 니 다.Test 함수 에서 서로 다른 유형의 값 을 되 돌려 테스트 를 통 해 이 점 을 확인 할 수 있 습 니 다.이 점 을 분명히 하 는 것 은 사실 매우 중요 하 다.적어도 대상 을 대상 으로 하 는 프레임 워 크 라 이브 러 리 코드 를 볼 때 의심 이 적 을 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
📋 모던 자바스크립트 Deep Dive | 17장 생성자 함수에 의한 객체 생성new 연산자와 Object 생성자 함수를 호출하면 빈 객체를 생성해서 반환한다. 생성자 함수란 new 연산자와 함께 호출하여 객체를 생성하는 함수를 말한다. 마치 객체(인스턴스)를 생성하기 위한 템플릿(클래스)처럼...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.