이 개체는 함수 실행 시 함수의 실행 환경에 따라 바인딩됩니다. 이 글은 주로 js에서 이 객체의 사용법에 대한 자세한 분석을 소개합니다. 필요한 친구들이 이를 배우고 공유할 수 있어 모든 사람에게 도움이 되기를 바랍니다.
실제로 이 문장의 핵심은 누가 함수를 호출하든 누구를 가리킨다는 것입니다.
구체적으로는 일반적으로 다음과 같은 상황이 있습니다.
글로벌 함수
글로벌 환경에서 이는 Window를 가리킵니다.
//例子1 function A() { console.log(this) } A();//Window
위의 예는 매우 간단합니다. 함수 A는 전역 환경에서 실행됩니다. 즉, 전역 개체 Window가 함수를 호출합니다. 이때 this는 Window
객체 메소드
를 가리킨다. 객체 메소드로 호출될 때는 해당 메소드
//例子2 var b = { getThis:function(){ console.log(this) } } b.getThis()//b
를 호출하는 객체를 가리킨다. 지금까지 제시한 예제는 비교적 간단하다. 다음은 흥미로운 내용입니다. :
//例子3 var c = { getFunc:function(){ return function(){ console.log(this) } } } var cFun = c.getFunc() cFun()//Window이 예제는 c.getFunc()를 실행할 때 가장 먼저 반환되는 것은 이 함수입니다. cFun을 호출한 다음 cFun(전역 환경에서)을 호출하므로 이 시점에서는 여전히 Window를 가리킵니다. 여기서 c 객체를 반환해야 한다면 어떻게 될까요? 처음에 this 개체는 함수가 실행될 때 결정된다고 말했습니다. 예제 3에서 c.getFunc()가 실행될 때 this 개체는 여전히 c를 가리키므로 위의 경우 this만 유지하면 됩니다. 코드가 약간 변경되었습니다.
//例子4 var c = { getFunc:function(){ var that = this //在这里保留住this return function(){ console.log(that) } } } var cFun = c.getFunc() cFun()//c이것이 바로 일부 코드에서 var self = this 또는 var that = this를 자주 볼 수 있는 이유입니다.
call and apply
fun.call(thisArg, arg1, arg2, ...)사용법 이 메소드에 대한 다음 예를 살펴보십시오.
//例子5 var d = { getThis:function(){ console.log(this) } } var e = { name:'e'//(给e写个`name`属性只是因为觉得孤零零的太难看了~~) } d.getThis.call(e)//e여기서 호출 함수의 의미를 볼 수 있습니다. 객체 o1을 지정하여 다른 객체 o2의 메소드를 호출합니다. 이때 이 객체는 o1을 가리킵니다. 그럼 아까 우리는 왜 평범하다고 했나요? 여기서 thisArg는 null 및 정의되지 않은 것으로 지정될 수 있기 때문입니다. 참조하세요:
//例子6 var d = { getThis:function(){ console.log(this) } } d.getThis.call(null)//Window d.getThis.call(undefined)//Window이번에는 전역 객체 Window
화살표 함수
es6의 화살표 함수도 이제 더 자주 사용되지만 주의가 필요한 점이 있습니다: 함수 본문 이 개체는 사용되는 개체가 아니라 정의된 개체입니다.//例子7 var f = { getThis:()=>{ console.log(this) } } f.getThis()//Window이 예는 기본적으로 다음과 같습니다. 이전 예제 2, 일반 함수를 화살표 함수로 다시 작성했지만 이때 이 객체는 이미 외부 Window를 가리키고 있습니다. 이해하기 어려울 수 있다는 점을 고려하여 몇 가지 예를 더 살펴보겠습니다.
//例子8 var g = { getThis:function(){ return function(){console.log(this)} } } var h = { getThis:function(){ return ()=> console.log(this) } } g.getThis()()//Window h.getThis()()//h이 예에서는 g의 getThis가 이전 예와 동일하게 작성되었습니다. 3. 함수가 전역 환경에서 실행되므로, this 이때 this는 Window를 가리키며, h의 getThis는 화살표 함수를 사용하므로 this는 외부 코드 블록의 this를 가리킵니다.
요약
차이점에 대한 자세한 예 this과 js의 이벤트 사이
위 내용은 js에서 이 객체의 사용 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!