이 내용의 인용 결과로 볼 때, 이는 전반적인 상황을 가리키는 것임에 틀림없으며, 중간에 이해되지 않는 링크가 있을 수 있습니다. 마지막에 코드를 추가하면 (obj.getNameFunc = obj.getNameFunc)의 내용이 무엇인지 알 수 있습니다. 네, 콘솔에 함수가 있으니 (obj.getNameFunc = obj. getNameFunc)가 실행됩니다. 결과는 함수입니다. 관성적 사고를 통해 우리는 이것이 단지 재할당 작업이고 함수를 호출하는 것은 여전히 obj라는 것을 당연하게 여깁니다. 실제로는 명령문이 실행된 후 전역 객체에 의해 실제로 이 함수가 호출됩니다.
질문을 잘못 읽었네요. 다시 설명하겠습니다.
먼저
입니다. 으아악object.getNameFunc
를 보면 그 정의는이렇게
으아악object.getNameFunc = object.getNameFunc
라고 쓰면 실제로는 이렇게 보일 수 있습니다.사실 그런 일을 할 때는
this
已经不是object
了。而是window
(在浏览器里)了。所以输出的是外面的name
.아마도 이렇겠죠 ==
할당 작업의 결과는 lvalue입니다.
따라서
으아악(object.getNameFunc = object.getNameFunc)()
은 다음과 같이 간주될 수 있습니다.
그래서
을 얻습니다.this
는 전역을 가리키므로 123으아악
이 내용의 인용 결과로 볼 때, 이는 전반적인 상황을 가리키는 것임에 틀림없으며, 중간에 이해되지 않는 링크가 있을 수 있습니다.
마지막에 코드를 추가하면 (obj.getNameFunc = obj.getNameFunc)의 내용이 무엇인지 알 수 있습니다. 네, 콘솔에 함수가 있으니 (obj.getNameFunc = obj. getNameFunc)가 실행됩니다. 결과는 함수입니다. 관성적 사고를 통해 우리는 이것이 단지 재할당 작업이고 함수를 호출하는 것은 여전히 obj라는 것을 당연하게 여깁니다.
실제로는 명령문이 실행된 후 전역 객체에 의해 실제로 이 함수가 호출됩니다.