기본적으로 JavaScript에서 'this'키워드의 작동 원리를 이해하고 배우려고합니다.'this'키워드는 다른 함수 안에있는 함수 내의 어떤 객체를 참조합니까?
내가 아는 한 'this'는 그 순간 안에있는 객체 (기능)를 의미합니다.
그래서,이 믿음으로, 나는 아래의 간단한 코드의 출력 테스트하고 싶었 :<body>
<input type="button" value="Add Age" onclick="Outer()" />
<script type="text/javascript">
function Outer(){
if(typeof this.Father == 'undefined')
{
this.Father = 0;
}
this.Father+=2;
alert(this.Father);
inner();
function inner(){
if(typeof this.Son== 'undefined')
{
this.Son = 0;
};
this.Son++;
alert(this.Son);
alert(this.Father);
};
};
</script>
</body>
을 그리고 출력은 나를 혼란. inner() 함수에서 this.Son은 아들의 증가 된 정수 값을 출력하기 때문입니다. 하지만 inner()가 .Father 특성을 가지고 있지 않기 때문에 Father가 실패 할 것으로 기대한다. 대신에 예외를 던지는는 this.Father - 어떤 값이
- '이'내부()
- 하고 다음 라인 '이'()
합니까 '이'키워드도 내부 함수 내부 에 항상 외부 범위의 주택을 말한다 :이 시점에서
나는 actualy 내 마음에서이 개 질문이?
'this'키워드는 메소드에서 무엇을 참조하는지 선언하지 않고 있습니까?
감사합니다,
감사합니다. 정말 유용한 정보입니다. 이 기사에서 호출 패턴에 대한 자세한 내용을 확인할 수 있습니다. http://mcarthurgfx.com/blog/article/4-ways-functions-mess-with-this – pencilCake
또한이 설명도 매우 유용합니다. 자바 스크립트 - 문맥 재검토 - http://msmvps.com/blogs/luisabreu/archive/2009/08/24/function-invocation-in-javascript-contexts-revisited.aspx – pencilCake