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

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

關于this指向的問題,如下代碼

關于this指向的問題,如下代碼

瀟瀟雨雨 2019-03-12 16:15:23
<a id="test"><span>測試一下</span></a><script type="text/javascript">document.getElementById("test").onclick=function(){    console.log(this);    function fun(){        console.log(this);    }    fun();}document.getElementById("test").click();</script>如上,為什么打印的第一個是對象,第二個是window,求解釋...
查看完整描述

3 回答

?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

https://segmentfault.com/a/11...

看函數的四種調用模式。

函數的四種調用模式
函數模式
特征:就是一個簡單的函數調用,函數名前面沒有任何的引導內容

this在函數模式中的含義: this在函數中表示全局對象,在瀏覽器中是window對象

方法模式
特征: 方法一定是依附于一個對象, 將函數賦值給對象的一個屬性, 那么就成為了方法.

this在方法模式調用中的含義:表示函數所依附的這個對象

構造器調用模式
特征:使用 new 關鍵字, 來引導構造函數.

由于構造函數只是給 this 添加成員. 沒有做其他事情. 而方法也可以完成這個操作, 就 this 而言, 構造函數與方法沒有本質區別.

構造函數中發this與方法中一樣, 表示對象, 但是構造函數中的對象是剛剛創建出來的對象

ps:補充關于構造函數中return關鍵字的補充說明

構造函數中不需要return, 就會默認的return this
如果手動的添加return, 就相當于 return this
如果手動的添加return 基本類型; 無效, 還是保留原來 返回this
如果手動添加return null; 或return undefiend, 無效
如果手動添加return 對象類型; 那么原來創建的this就會被丟掉, 返回的是 return后面的對象
上下文調用模式
特征:上下文(Context),就是函數調用所處的環境。上下文調用,也就是自定義設置this的含義。

常見的就是通過call 、apply和bind調用


查看完整回答
反對 回復 2019-03-16
  • 3 回答
  • 0 關注
  • 505 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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