var a = new Persion('Tom')인 경우 self와 this는 여전히 Persion을 가리킵니다. a.before().after()를 실행할 때 self는 Window를 가리켜 이를 저장하려고 합니다. 자기의 인위적인 변화는 없는데 왜 자기의 가치는 변하는가?
보충사항:
맨 위 문장입니다. var self= this; 디버깅할 때 self가 Persion에서 window로 변경된 것을 발견했습니다. 전후의 선언을 주석 처리했는데 self가 선언되지 않은 경우 출력이 정의되지 않은 것을 발견했습니다. 창문
self 변수는 before 함수에 정의되어 있지 않으므로 여기서 self는 window.self를 참조합니다.
self 속성은 창 자체에 대한 읽기 전용 참조를 반환합니다. Window 속성과 동일합니다.
전후의 _self 값이 정의되지 않았습니다
문제가 있는 것으로 알고 있습니다. 제 문제는 제 코드에서 추출되어 단순화되었습니다. 원본 코드에 비동기 부분이 있는데, 이것이 비동기 부분에서 창이 됩니다. 디버깅을 해보니 윗문장 var self= this의 self가 Persion에서 window로 바뀌는 것을 발견하고 self에 문제가 있는 줄 알았습니다.