kevinZee
2017-03-06 13:41:39
<script?type="text/javascript">
var?value="1";
window.onload=function()
{
var?oBtn=document.getElementsByTagName('input')[0];
oBtn.onclick=function()
{
function?fn()
{
alert(this.value);
}
????????fn();??????????????????????//打印出1
}
}
</script>
<body>
<input?type="button"?value="click">
</body>請問函數fn內的this為什么指向了window
3 回答

ruibin
TA貢獻358條經驗 獲得超213個贊
function?fn()
????????{
????????????alert(this.value);
????????}
這個函數的運行環境是window,所以這里面的this指向window。如果你想打印出oBtn的value值,函數可以這樣改造下,
window.onload=function()
{
????var?oBtn=document.getElementsByTagName('input')[0];
????oBtn.onclick=function()
????{
????????var _this = this; //此時運行環境中的this為oBtn
????????function?fn()
????????{
????????????alert(_this.value);
????????}
????????fn();??????????????????????//打印出1
????}
}

滄浪之水
TA貢獻15條經驗 獲得超2個贊
this 問題很簡單,this總是指向當前調用的對象,如 object.method 如果沒有隱去了調用的對象,則一般為全局對象,瀏覽器中是window對象, 在nodejs中是global對象。
添加回答
舉報
0/150
提交
取消