코드로 바로 이동:
위 코드의 이 점이 다른 이유는 무엇인가요?
이제 잘 이해가 되었습니다. 답변 부탁드립니다!
함수 차용과 생성자 함수를 버리고 이제 두 가지 유형만 남았습니다. 하나는 일반 함수이고 다른 하나는 객체 메서드입니다.
객체 메서드는 객체를 가리키고, 일반 함수는 전역을 가리킵니다.
누가 이 함수를 호출하든 this누구를 가리킵니다.
this
this的指向只和你如何调用这个函数有关,比如你说第一个this指向test,这可不一定,有的是办法把这个this的指向改掉。只有当你运行test.outer()的时候,第一个this才会指向test의 지정은 이 함수를 호출하는 방법에만 관련됩니다. 예를 들어 첫 번째
test
test.outer()
/a/11...
이것은 클로저 문제입니다. 함수 메소드를 포함하여 객체 리터럴을 통해 객체에 속성이 할당되면 이 함수 메소드에는 콘솔 출력이 있고 이 함수에서 함수가 선언되면 일반적인 상황에서 클로저 문제가 발생합니다. , 이것은 창을 가리킨다. 특별한 상황에서는 이 값을 변경할 수 있다. 내가 쓴 패킷 폐쇄에 대한 글을 읽으면 내 프로필을 읽을 수 있다.
실제로 익명으로 답변하는 것은 옳지 않습니다! 객체의 함수 내부에 정의된 함수는 this 내부는 물론 상위 환경 변수를 직접 얻을 수 없습니다. 이 방법으로 var that=this와 같은 변수를 정의해야 합니다. 이 객체의 레벨을 지정합니다. var test = {
함수 차용과 생성자 함수를 버리고 이제 두 가지 유형만 남았습니다. 하나는 일반 함수이고 다른 하나는 객체 메서드입니다.
객체 메서드는 객체를 가리키고, 일반 함수는 전역을 가리킵니다.
누가 이 함수를 호출하든
this
누구를 가리킵니다.
가this
的指向只和你如何调用这个函数有关,比如你说第一个this
指向test
,这可不一定,有的是办法把这个this
的指向改掉。只有当你运行test.outer()
的时候,第一个this
才会指向test
의 지정은 이 함수를 호출하는 방법에만 관련됩니다. 예를 들어 첫 번째test
를 가리키는 경우 반드시 그렇지는 않습니다. 🎜.test.outer()
를 실행할 때만 첫 번째 🎜가test
를 가리킵니다. 🎜/a/11...
이것은 클로저 문제입니다. 함수 메소드를 포함하여 객체 리터럴을 통해 객체에 속성이 할당되면 이 함수 메소드에는 콘솔 출력이 있고 이 함수에서 함수가 선언되면 일반적인 상황에서 클로저 문제가 발생합니다. , 이것은 창을 가리킨다. 특별한 상황에서는 이 값을 변경할 수 있다. 내가 쓴 패킷 폐쇄에 대한 글을 읽으면 내 프로필을 읽을 수 있다.
실제로 익명으로 답변하는 것은 옳지 않습니다! 객체의 함수 내부에 정의된 함수는 this 내부는 물론 상위 환경 변수를 직접 얻을 수 없습니다. 이 방법으로 var that=this와 같은 변수를 정의해야 합니다. 이 객체의 레벨을 지정합니다.
으아악var test = {