在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ a() {}和a: () => {}的區(qū)別?

a() {}和a: () => {}的區(qū)別?

之前以為兩種寫(xiě)法大同小異區(qū)別不大,今天才發(fā)現(xiàn)其實(shí)并不是這樣:
項(xiàng)目當(dāng)中這樣寫(xiě)死活不行,bug找了好久,

SET_ACTIVE_INDEX (state, payload) {
  state.activeIndex = payload.index
}

改成下圖所示就可以了
圖片描述

哪位同學(xué)說(shuō)說(shuō)a() {}等同于什么呢,不勝感激!

回答
編輯回答
心悲涼

https://developer.mozilla.org...

就是ES6新增加的一個(gè)對(duì)象方法的簡(jiǎn)寫(xiě),你說(shuō)的不行肯定是報(bào)錯(cuò)了吧,應(yīng)該是環(huán)境不支持ES6

===========================================
箭頭函數(shù)能運(yùn)行大概率不是ES6環(huán)境問(wèn)題了,看一下瀏覽器版本的兼容情況,或者方法里有沒(méi)有用到this?

2018年5月20日 13:29
編輯回答
深記你

兩者都是對(duì)象里面聲明的屬性,而且屬性值都是函數(shù),但是兩者最大的區(qū)別就是函數(shù)里面的this指向不同

const obj1 = {
  a () {
      console.log(this)
  }
}

const obj2  = {
  a: () => {
    console.log(this)
  }
}

obj1.a() 
obj2.a()

clipboard.png

前者可以認(rèn)為是ES6定義是屬性為函數(shù)的語(yǔ)法糖,使用ES5表示就是

const obj1 = {
  a: function() {
      console.log(this)
  }
}

后者就是一個(gè)使用箭頭函數(shù)來(lái)表示對(duì)象的屬性,使用ES5來(lái)理解就是

const _this = this
const obj2 = {
  a: function() {
      console.log(_this)
  }
}
2018年5月6日 20:23
編輯回答
局外人

你的題目問(wèn)的是a(){}a:()=>{}區(qū)別,這個(gè)確實(shí)有區(qū)別,但后面你有問(wèn) a:func(){}a:()=>{}區(qū)別,后面這個(gè)其實(shí)沒(méi)有區(qū)別,只是寫(xiě)法不一樣的。
第一個(gè)a(){}是聲明實(shí)現(xiàn)一個(gè)函數(shù)對(duì)象
a:()=>{} 只能用在對(duì)象內(nèi)定義中,是聲明一個(gè)屬性,其屬性值實(shí)為一個(gè)綁定到匿名函數(shù)中成為一個(gè)方法。
如果要在非對(duì)象屬性定義中使用類似a:()=>{},則應(yīng)該是 var a=(()=>{})

2018年7月21日 19:07
編輯回答
冷咖啡

區(qū)別就是一個(gè)是普通的函數(shù)聲明(對(duì)象方法的簡(jiǎn)寫(xiě)就是普通的函數(shù)),一個(gè)是箭頭函數(shù)。this的區(qū)別。

window.a = 'window'
const obj ={
    a: 'obj',
    say() {
        console.log(this.a)
    },
    say1: function () {
        console.log(this.a)
    },
    say2: () => {
        console.log(this.a)
    }
}
obj.say() // obj
obj.say1() // obj
obj.say2() // window
2018年5月11日 15:01
編輯回答
愿如初

沒(méi)有報(bào)錯(cuò),不然不會(huì)找那么久,有es6環(huán)境。大哥你沒(méi)有回答我的問(wèn)題呢,照著mdn的那么a:func(){}和a:()=>{}有什么區(qū)別??

2018年1月18日 05:56