此关键字在箭头函数和普通函数中的行为不同

时间:2016-06-01 11:39:57

标签: javascript ecmascript-6

我有以下两个陈述:

没有箭头功能 -

var cell = svg.selectAll("g")
    .data(nodes)
    .enter().append("svg:g")
    .attr("class", "cell")
    .on("click", (d) => {
            console.log(d);
            zoomIn(d,this);
    });

使用箭头功能 -

var cell = svg.selectAll("g")
    .data(nodes)
    .enter().append("svg:g")
    .attr("class", "cell")
    .on("click", function(d) {
            console.log(d);
            zoomIn(d,this);
    });

第一个在window中提供this个对象,而第二个提供attr()返回的对象。我读到了它here。有没有办法使用箭头函数绑定对象而不是window对象

1 个答案:

答案 0 :(得分:3)

不,箭头函数不能绑定,因为它们根本不在范围内定义,只需从外部范围使用它。

根据外部范围中的值,该值将在函数内使用。在你的情况下,它似乎是窗口对象。

这与使用外部范围的任何其他变量没有太大区别。