JavaScript This -筆記

來源:互聯網
上載者:User

標籤:asc   改變   調用   隱藏   參考   java   .com   rip   stand   

參考文章:blog.crimx.com/2016/05/12/understanding-this/

筆記:
在es6箭頭函數之前this是執行時候確定的,而非定義時候確定。
函數都是被調用的,調用時找前面調用對象,有明確顯示的就是明確顯示的對象,沒有記得看下隱藏的對象
函數也是對象,函數可以作為一個對象的屬性(此時稱為方法)
作為函數調用時,this綁定到全域對象,
作為方法調用時,this綁定到該方法所屬對象

1.this在非strict 模式下,就是window
在strict 模式下是undefined
2.函數(或方法)在調用中,始終是對象在調用,
顯而易見的格式,obj.fun()這時this就是obj
隱形的格式,fun()這時this是window,其實是這樣window.fun(),在js中window直接隱藏不寫了
3.通過call和apply來改變this,call和apply無傳回值
參考“供爺”法則(a對象的方法作用到b對象上,a對象就是爺,要寫在前面),格式Object.prototype.call()
此時this指向的是call/apply第一個參數
call和apply功能一樣,只是第二個參數形式不一樣call是列表形式參數,apply參數是數組形式
4.bind改變this之後,call和apply不在生效,bind返回的是調用bind的函數
bind執行時候this指向也是第一個參數
5.new一個‘類’(js中的函數)時,this會綁定在新對象上
function Test(){
console.log(this)
}
new Test()// Test{}會先綁定到一個Null 物件上
6.箭頭函數
在哪裡建立this就指向誰

 

JavaScript This -筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.