像正常功能一样使用箭头功能

时间:2016-10-27 16:23:20

标签: javascript angularjs ecmascript-6

我喜欢新的箭头()=>{}语法,我想在任何可能的地方使用它。我知道箭头函数指向外部这个上下文。是否有像正常功能一样使用箭头功能的方法?我只需要将this点指向箭头函数的内部。

我需要制作这段代码:

let foo = () => {
 // "this" keyword should point to the inner of that function, not window object
}

就像这段代码一样:

function foo() {
 // "this" keyword points to the inner of that class/object/function/whatever-it-calls-fix-me-if-am-i-wrong
}

是否可以实现,或者我需要坚持使用function关键字?

更具体地说,我需要使用this来使其在Angular中使用controllerAs语法,但这不是重点。这是一个比AngularJS问题更具JS问题。

2 个答案:

答案 0 :(得分:1)

  

有没有办法像正常功能一样使用箭头功能?我只需要将这个点指向箭头函数的内部。

合理地,没有。实际上,只是没有,期间。 :-)使用function函数。

它无法工作,因为箭头功能关闭this。这意味着调用者无法在几种情况下设置this(例如原型上的函数,设置this的jQuery等库的回调等)。

答案 1 :(得分:-1)

如何使用箭头功能与使用此功能的库

let _self = this;
something.each(function() {
    console.log(_self); 
    console.log(this); 
});

参考:https://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html