亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于JS里的this問題。

關于JS里的this問題。

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

????}

}


查看完整回答
1 反對 回復 2017-03-06
  • kevinZee
    kevinZee
    多謝回復,我主要疑問就是fn的運行環境是window
?
滄浪之水

TA貢獻15條經驗 獲得超2個贊

this 問題很簡單,this總是指向當前調用的對象,如 object.method 如果沒有隱去了調用的對象,則一般為全局對象,瀏覽器中是window對象, 在nodejs中是global對象。

查看完整回答
反對 回復 2017-03-06
?
qq_e累_0

TA貢獻12條經驗 獲得超15個贊

應該是你生聲明了一個全局函數(fn) ? ;fn 是window下的。?

查看完整回答
反對 回復 2017-03-06
  • kevinZee
    kevinZee
    我聲明在onclick里,那fn不應該只存在于這個事件的函數的作用域里嗎,求解
  • qq_e累_0
    qq_e累_0
    var fn = function (){...} 才是在事件的函數的作用域里
  • kevinZee
    kevinZee
    多謝回復,我試了下用var fn = function (){...} ,運行環境還是在window下的。我覺得這里估計是不是可以按閉包的匿名函數理解,匿名函數具有全局性
  • 3 回答
  • 0 關注
  • 2400 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號