国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

箭頭函數(shù)中this的指向問題

DDreach / 2829人閱讀

摘要:箭頭函數(shù)中指向等箭頭函數(shù)箭頭函數(shù)的,總是指向定義時(shí)所在的對象,而不是運(yùn)行時(shí)所在的對象。關(guān)鍵字通常不能在箭頭函數(shù)中使用除非是嵌套在允許使用的函數(shù)內(nèi)。參考資料的博客可以說很厲害了圖解指向什么阮一峰關(guān)于箭頭函數(shù)的討論

箭頭函數(shù)中this指向等

箭頭函數(shù) javascript this

“箭頭函數(shù)”的this,總是指向定義時(shí)所在的對象,而不是運(yùn)行時(shí)所在的對象。

箭頭函數(shù)位于foo函數(shù)內(nèi)部。只有foo函數(shù)運(yùn)行后(被調(diào)用后,內(nèi)部this確定),它才會按照定義生成,所以foo運(yùn)行時(shí)所在的對象,恰好是箭頭函數(shù)定義時(shí)所在的對象

function foo() {
  setTimeout( () => {
    console.log("id:", this.id);
  },100);
}

var id = 21; // 箭頭函數(shù)運(yùn)行時(shí)所在的環(huán)境

foo.call( { id: 42 } ); // 箭頭函數(shù)定義時(shí)所在的環(huán)境

// 結(jié)果是 id: 42
function foo() {
  return () => {
    return () => {
      return () => {
        console.log("id:", this.id);
      };
    };
  };
}

var f = foo.call({id: 1});

var t1 = f.call({id: 2})()();
var t2 = f().call({id: 3})();
var t3 = f()().call({id: 4});

// 結(jié)果是: 1,1,1
var obj = {
  field: "hello",
  getField: () => { 
      // 此時(shí)箭頭函數(shù)被定義,this指向obj的this,而obj的this是window,則此箭頭函數(shù)的this指向window
    console.log(this)
  },
}
obj.getField();

//window 

箭頭函數(shù)里不但沒有 this,也沒有 arguments, super ……

var arguments = 42;
var arr = () => arguments;

arr(); // 42

function foo() {
  var f = (i) => arguments[0]+i; 
  // foo函數(shù)的間接參數(shù)綁定
  return f(2);
}

foo(1); // 3
 var f = (i) => arguments; 
 f(1); // arguments is not defined

通過 call 或 apply 調(diào)用: 由于 this 已經(jīng)在詞法層面完成了綁定,通過 call() apply() 方法調(diào)用一個函數(shù)時(shí),只是傳入了參數(shù)而已,對 this 并沒有什么影響

var adder = {
  base : 1,
    
  add : function(a) {
    var f = v => v + this.base;
    return f(a);
  },

  addThruCall: function(a) {
    var f = v => v + this.base;
    var b = {
      base : 2
    };
            
    return f.call(b, a);
  }
};

console.log(adder.add(1));         // 輸出 2
console.log(adder.addThruCall(1)); // 仍然輸出 2

箭頭函數(shù)不能用作構(gòu)造器,和 new一起用會拋出錯誤。

var Foo = () => {};
var foo = new Foo(); // TypeError: Foo is not a constructor

箭頭函數(shù)沒有prototype屬性。

var Foo = () => {};
console.log(Foo.prototype); // undefined

yield 關(guān)鍵字通常不能在箭頭函數(shù)中使用(除非是嵌套在允許使用的函數(shù)內(nèi))。因此,箭頭函數(shù)不能用作生成器。

參考資料

MDN

zhengweikeng的博客

可以說很厲害了,圖解javascript this指向什么?

阮一峰es6關(guān)于箭頭函數(shù) this 的討論

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/92579.html

相關(guān)文章

  • 關(guān)于ES6箭頭函數(shù)this問題

    摘要:對象的指向是可變的,但是在箭頭函數(shù)中,它是固定的。同樣的由于箭頭函數(shù)沒有自己的所以傳統(tǒng)的顯性綁定無效內(nèi)部的指向外部在的學(xué)習(xí)中,的指向問題一直是個難點(diǎn),特別是在對象方法中使用時(shí),必須更加小心。由此箭頭函數(shù)在很大程度上減少了我們的困擾。 什么是箭頭函數(shù) 用法 ES6 允許使用箭頭(=>)定義函數(shù) 測試 var p1 = document.getElementById(test1)...

    LeviDing 評論0 收藏0
  • 論普通函數(shù)箭頭函數(shù)區(qū)別以及箭頭函數(shù)注意事項(xiàng)、不適用場景

    摘要:第二種情況是箭頭函數(shù)的如果指向普通函數(shù)它的繼承于該普通函數(shù)。箭頭函數(shù)的指向全局,使用會報(bào)未聲明的錯誤。 showImg(https://segmentfault.com/img/remote/1460000018610072?w=600&h=400); 箭頭函數(shù)是ES6的API,相信很多人都知道,因?yàn)槠湔Z法上相對于普通函數(shù)更簡潔,深受大家的喜愛。就是這種我們?nèi)粘i_發(fā)中一直在使用的API...

    paulquei 評論0 收藏0
  • ES6箭頭函數(shù)this指向哪里?

    摘要:注意因?yàn)榧^函數(shù)內(nèi)部的是指向外層代碼塊的最近的,例中的函數(shù)的,所以我們可以通過改變外層代碼塊的的指向從而改變箭頭函數(shù)中的指向例中使用了函數(shù)的方法。 一、this關(guān)鍵字小測試 ES6箭頭函數(shù)體中的this指向哪里? 在回答這個問題之前先來揣揣你對this關(guān)鍵字的了解程度:(讓我們回到ES6之前)題: var obj = { a: function() { cons...

    Half 評論0 收藏0
  • 輕松搞定javascriptthis指向

    摘要:調(diào)用在中,通過的形式調(diào)用一個構(gòu)造函數(shù),會創(chuàng)建這個構(gòu)造函數(shù)實(shí)例,而這個實(shí)例的指向創(chuàng)建的這個實(shí)例。如下例所示,在構(gòu)造函數(shù)內(nèi)部使用并沒有改變?nèi)肿兞康闹怠o@然,箭頭函數(shù)是不能用來做構(gòu)造函數(shù)。   關(guān)于javascript中this指向的問題,現(xiàn)總結(jié)如下,如有不正確,歡迎指正。   javascript中,this的指向并不是在函數(shù)定義的時(shí)候確定的,而是在其被調(diào)用的時(shí)候確定的。也就是說,函數(shù)的...

    shinezejian 評論0 收藏0
  • JavaScript this 指向問題深度解析

    摘要:而改變了這種狀態(tài),雖然定義的類用運(yùn)算符得到的仍然是,但它不能像普通函數(shù)一樣直接調(diào)用同時(shí),中定義的方法函數(shù),也不能當(dāng)作構(gòu)造函數(shù)用來調(diào)用。而在中,用調(diào)用一個構(gòu)造函數(shù),會創(chuàng)建一個新對象,而其中的就指向這個新對象。 JavaScript 中的 this 指向問題有很多博客在解釋,仍然有很多人問。上周我們的開發(fā)團(tuán)隊(duì)連續(xù)兩個人遇到相關(guān)問題,所以我不得不將關(guān)于前端構(gòu)建技術(shù)的交流會延長了半個時(shí)候討論 ...

    liuchengxu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<