이 개체는 함수 실행 시 함수의 실행 환경에 따라 바인딩됩니다. 이 글은 주로 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
//例子4 var c = { getFunc:function(){ var that = this //在这里保留住this return function(){ console.log(that) } } } var cFun = c.getFunc() cFun()//c
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
//例子6 var d = { getThis:function(){ console.log(this) } } d.getThis.call(null)//Window d.getThis.call(undefined)//Window
화살표 함수
es6의 화살표 함수도 이제 더 자주 사용되지만 주의가 필요한 점이 있습니다: 함수 본문 이 개체는 사용되는 개체가 아니라 정의된 개체입니다.//例子7 var f = { getThis:()=>{ console.log(this) } } f.getThis()//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
요약
차이점에 대한 자세한 예 this과 js의 이벤트 사이
위 내용은 js에서 이 객체의 사용 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!