var emitter = require('events').EventEmitter;
var util = require('util');
let Person = function (name) {
this.name = name;
};
util.inherits(Person, emitter);
let p = new Person("jonny");
p.on('speak', (said) => {
console.log(` ${this.name} said: ${said}`);
});
p.emit('speak', "You may delay but time will not!");
Konsoledies wirkt nicht das gleiche in Lambda und ohne es in ecma6 Javascript und NodeJS
undefined sagte zurück: Sie verzögern, aber die Zeit wird nicht!
, wenn Sie von Lambda ändern zurück
p.on('speak', function(said) {
console.log(` ${this.name} said: ${said}`);
});
es funktioniert. Kann mir jemand erklären, warum sich das bei syntaktischen Zuckerveränderungen anders verhält?
Weil ist nicht nur Zucker. '=>' erzeugt keinen neuen Kontext und hat nicht 'this'. –
Die 'function()' Version ist auch ein Lambda. – nnnnnn
http://StackOverflow.com/Documentation/Javascript/186/Functions/720/Arrow-Functions#T=201608012207550133428 –