js--call、箭頭函數/匿名函數

來源:互聯網
上載者:User

標籤:win   改變   blog   app   方法   class   define   簡單   nbsp   

js中的this指向(較簡單的幾種):

1.普通函數的this指向window;

2對象方法指向當前對象;

3.()=》箭頭函數指向定義時的對象;

 

apply和call可以改變當前的this指向,但是不能改變箭頭函數的指向

function foo() {  return () => {    return () => {      return () => {        console.log(‘id:‘, this.id);      };    };  };}var f = foo.call({id: 1});var t1 = f.call({id: 2})()(); // id: 1var t2 = f().call({id: 3})(); // id: 1var t3 = f()().call({id: 4}); // id: 1

上面舉了個例子,說明箭頭函數的this是不能改變的,相反,如果是普通匿名函數,就可以改變:

function foo() {  return () => {    function() {        console.log(‘id:‘, this.id);    };  };}var f1 = foo.call({id: 1})()()//undefined;var f2 = foo().call({id: 1})()//undefined;var f3 = foo()().call({id: 1})//1

前兩個this最後指向了window,最後一個指向{ID:1}

 

js--call、箭頭函數/匿名函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.