访问ES6箭头函数的call()方法的第一个参数

时间:2015-07-13 12:26:40

标签: ecmascript-6 arrow-functions

有没有办法访问ES6箭头函数的call()方法的第一个参数?

var obj = {
  getFn: function() { return () => {
      //how to access bar here
      return this.what;
    }
  },
  any: 1
}


var foo = obj.getFn();
var bar = {
  any: 2
};

foo.call(bar);

2 个答案:

答案 0 :(得分:1)

我不确定您要做什么,但如果您询问如何访问通过this传递的.call值,答案是:您可以&# 39;吨

由于箭头功能没有自己的this,因此.call无法设置值。如果您希望函数具有自己的this值,请不要使用箭头函数。

答案 1 :(得分:0)

正如Felix所注意到的,箭头函数没有自己的值,因此.call.apply方法无法更改箭头函数的this

如果您想要访问箭头功能中的bar,可以通过参数传递它。

var obj = {
  getFn: function() { 
    return (bar) => {
      console.log(bar);
      return this.what;
    }
  },
  any: 1
};

var foo = obj.getFn();
var bar = {
  any: 2
};

foo(bar); // prints bar into console