基本上我試圖理解和學習JavaScript中的'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輸出Son的遞增整數值。但我期待this.Father失敗,因爲inner()沒有.Father屬性。但是,而不是拋出異常它提醒this.Father哪位的值似乎
- 以上「這」是指內()
- 和下面的行「本」是指外()
在這一點上,我在我的腦海actualy 2個問題:
是「這個」關鍵字總是指 甚至裏面的內部函數外部範圍的住房?
而沒有任何聲明'this'的關鍵字引用了該方法中的內容? (我的意思,而不必東西LIK
var myFamily = new Outer()
)
謝謝,
布拉克ozdogan
謝謝,這是非常有用的信息。 你可以在這篇文章中找到更多關於調用模式的內容: http://mcarthurgfx.com/blog/article/4-ways-functions-mess-with-this – pencilCake 2010-01-29 12:27:42
而且這一點也相當具有說明性:函數調用在JavaScript - 上下文重訪 - http://msmvps.com/blogs/luisabreu/archive/2009/08/24/function-invocation-in-javascript-contexts-revisited.aspx – pencilCake 2010-01-29 14:38:26