>  Q&A  >  본문

javascript - 답변: 인스턴스 객체가 생성자를 호출할 때 생성자에서 이것이 의미하는 바는 무엇입니까?

이 문제는 실제로 jQuery 소스 코드를 분석할 때 var ret = jQuery.merge(this.constructor(), elems );가 사용되는 것을 보았는데, this.constructor()는 init 메소드에 의해 생성된 빈 인스턴스 객체를 반환합니다. 그래서 그 방향이 헷갈립니다.
다음은 테스트 코드입니다.

으아악

여기서 constructor()를 직접 호출하면 왜 this의 포인터가 바뀌고 자동으로 새 객체가 생성되나요? constructor() 메소드의 내부 구현이 이에 영향을 줍니까?

ringa_leeringa_lee2662일 전790

모든 응답(1)나는 대답할 것이다

  • 某草草

    某草草2017-07-05 10:41:35

    이것과 constructor()方法的内部实现没有什么关系,其实就是函数内this指向的问题。
    当函数作为对象的属性调用的时候,this指向这个对象;
    当函数直接调用的时候,在非严格模式下,this指向window
    p1.constructor指向的就是Person函数,当调用p1.constructor();时,Person是作为p1的属性调用的,所以this指向p1;当调用var p2 = p1.constructor;p2();时,其实就相当于直接调用Person();,所以this指向window.

    회신하다
    0
  • 취소회신하다