js new 와 return

선행:
기본적으로 함수 의 반환 값 은 undefined (즉, 반환 값 이 정의 되 지 않 음) 입 니 다.
 
new 연산 자
js 의 new 연산 자 는 자바 처럼 새로운 대상 을 얻 을 수 있 습 니 다. 예 를 들 어:
function Person() {
  this.heart = 'red';
}

let per = new Person();
console.log(per.heart);  // red

 그렇다면 new 때 내부 에 무슨 일이 일 어 났 을 까?
우 리 는 위조 코드 로 시 뮬 레이 션 을 해 보 자.
new Person() = {
  var obj = {};
  obj.__proto__ = Person.prototype;
  var result = Person.call(obj);
  return typeof result === 'object' ? result : obj;
}
  • 빈 대상 obj 만 들 기;
  • obj 의 원형 체인 설정: obj - > Person. prototype - > Object. prototype - > null;
  • obj 의 실행 환경 에서 Person 함 수 를 호출 (실행) 합 니 다. (또는 this 의 방향 을 바꾼다)
  • 세 번 째 단계 의 반환 값 을 고찰 하고 반환 값 이 없 거나 대상 이 아 닌 값 을 되 돌려 주면 obj 를 새로운 대상 으로 되 돌려 줍 니 다. 그렇지 않 으 면 반환 값 을 새로운 대상 으로 되 돌려 줍 니 다.

  •  
    이상 은 new 연산 자의 운영 체제 간략 판 입 니 다.
     
    return 과 의 화학 반응
    new 의 운영 체 제 를 대체적으로 이해 한 후에 답 이 나 오 려 고 한다.
      
    만약 에 우리 의 구조 함수 return 이 간단 한 기본 데이터 형식 (undefinded, 숫자, 문자열, 불) 이 라면 new 가 원 하 는 대상 을 정확하게 만 들 수 있 습 니 다.
    구조 함수 return 이 대상 (기본 데이터 형식의 포장 대상, 예 를 들 어 Object ('OK') 등) 이 라면 우리 new 는 생각 하 는 대상 을 얻 지 못 합 니 다.
     
    다음 인 스 턴 스 를 붙 입 니 다:
    //     :https://www.jianshu.com/p/ed692646ee7c
    function User( name, age){
      this.name = name;
      this.age = age;
    
    // return;                              //    this
    // return null;                         //    this
    // return this;                         //    this
    // return false;                        //    this
    // return 'hello world';                //    this
    // return 2;                            //    this
    
    // return [];                            //        [], user.name = undefined
    // return function(){};                  //        function,   this, user.name = undefined
    // return new Boolean( false);           //        boolean,   this, user.name = undefined
    // return new String( 'hello world');    //        string,   this, user.name = undefined
    // return new Number( 32);               //       number,   this, user.name = undefined
    }
    var user = new User("  ",20)
    console.log(user);
    

    좋은 웹페이지 즐겨찾기