国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

arrow function

2024-04-27 15:14:54
字體:
來源:轉載
供稿:網友

這個恐怕是ES6最最常用的一個新特性了,用它來寫function比原來的寫法要簡潔清晰很多:

function(i){ return i + 1; } //ES5(i) => i + 1 //ES6

簡直是簡單的不像話對吧… 如果方程比較復雜,則需要用{}把代碼包起來:

function(x, y) { x++; y--; return x + y;}(x, y) => {x++; y--; return x+y}

除了看上去更簡潔以外,arrow function還有一項超級無敵的功能! 長期以來,javaScript語言的this對象一直是一個令人頭痛的問題,在對象方法中使用this,必須非常小心。例如:

class Animal { constructor(){ this.type = 'animal' } says(say){ setTimeout(function(){ console.log(this.type + ' says ' + say) }, 1000) }} var animal = new Animal() animal.says('hi') //undefined says hi

運行上面的代碼會報錯,這是因為setTimeout中的this指向的是全局對象。所以為了讓它能夠正確的運行,傳統的解決方法有兩種:

第一種是將this傳給self,再用self來指代this

says(say){ var self = this; setTimeout(function(){ console.log(self.type + ' says ' + say) }, 1000)

第二種方法是用bind(this),即

says(say){ setTimeout(function(){ console.log(self.type + ' says ' + say) }.bind(this), 1000)

但現在我們有了箭頭函數,就不需要這么麻煩了:

class Animal { constructor(){ this.type = 'animal' } says(say){ setTimeout( () => { console.log(this.type + ' says ' + say) }, 1000) }} var animal = new Animal() animal.says('hi') //animal says hi

當我們使用箭頭函數時,函數體內的this對象,就是定義時所在的對象,而不是使用時所在的對象。 并不是因為箭頭函數內部有綁定this的機制,實際原因是箭頭函數根本沒有自己的this,它的this是繼承外面的,因此內部的this就是外層代碼塊的this。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永顺县| 汤阴县| 阿勒泰市| 吴堡县| 阳城县| 句容市| 巴青县| 建始县| 葫芦岛市| 义乌市| 洛隆县| 图木舒克市| 碌曲县| 云和县| 沛县| 岳阳县| 肃南| 甘泉县| 温泉县| 叶城县| 江永县| 鹤山市| 辛集市| 青阳县| 北川| 胶南市| 望都县| 博罗县| 定边县| 轮台县| 仪征市| 华蓥市| 尼勒克县| 景东| 安吉县| 华阴市| 金寨县| 洛扎县| 秦安县| 九台市| 广河县|