JavaScript:new 함수 와 직접 호출 함수 의 차이 분석

1187 단어 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 함수 에서 서로 다른 유형의 값 을 되 돌려 테스트 를 통 해 이 점 을 확인 할 수 있 습 니 다.이 점 을 분명히 하 는 것 은 사실 매우 중요 하 다.적어도 대상 을 대상 으로 하 는 프레임 워 크 라 이브 러 리 코드 를 볼 때 의심 이 적 을 것 이다.

좋은 웹페이지 즐겨찾기