将此文件从.call()传递给箭头功能

时间:2017-03-28 07:04:28

标签: javascript ecmascript-6 arrow-functions

我有一个箭头功能,我试图用call()执行。为简化起见,如下:

按预期运作

const func = (e) => {
    console.log(e)
}

func.call(null, e)

嗯...这里发生了什么?

我希望以下代码将element传递给func作为this

const func = (e) => {
    console.log(this)
    console.log(e)
}

func.call(element, e)

但是,this仍为undefined

如果我将其切换到常规功能定义,则所有功能都按预期工作。

const func = function (e) {
    console.log(this)
    console.log(e)
}

func.call(element, e)

问题

为什么我无法将this的上下文传递到call()的箭头函数中?

2 个答案:

答案 0 :(得分:9)

this未绑定在箭头函数中,因此call()apply()只能传递参数。 this被忽略

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Invoked_through_call_or_apply

答案 1 :(得分:1)

在ES6 thislexical scope表示箭头函数内this的值与箭头函数外的值相同。在ES6之前的格式this是您作为call方法的第一个参数传递的对象。

相关问题