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