尝试在保持this.emit()
的同时弄清楚如何执行箭头功能。在gulp和ES6中我有这样的功能:
gulp.src([paths.sass])
.pipe(sourcemaps.init())
.pipe(sass().on('error', function (e) {
reportError(e);
this.emit('end');
}))
注意this.emit(' end')的用法。当我使用非箭头功能时效果很好,但是我做的第二个:
gulp.src([paths.sass])
.pipe(sourcemaps.init())
.pipe(sass().on('error', (e) => {
reportError(e);
this.emit('end');
}))
this.emit('end')
已不再可用。如何使用箭头函数编写该函数并维护this.emit()
答案 0 :(得分:1)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
在ECMAScript2015的箭头函数中,this
始终引用外部函数,没有运行时上下文。
meaing:
function out() {
var name = "out"
return function() {
return function() {
return function() {
console.log(this.name) // out
}
}
}
}
arguments
yield
new
答案 1 :(得分:0)
如果on
返回的对象的sass()
方法安排将提供的函数作为另一个对象的方法调用,并且该函数需要获取调用它的对象的值,要调用其emit
方法,请使用function
声明。
箭头功能避免使用
Function.prototype.bind
在定义上下文的当前this
值上,始终使用函数内的定义上下文的this
值。箭头函数的另一个方面是它们不能用作构造函数。箭头函数不要弃用函数声明和表达式,并且应该根据具体情况考虑“优先”。