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!");
コンソールがこれは
未定義を返しますJavaScriptとnodejs ecma6にラムダで、それなしで同じように作用していないが言った:あなたは遅れるかもしれませんが、時間がないでしょう!
あなたが戻ってラムダから
p.on('speak', function(said) {
console.log(` ${this.name} said: ${said}`);
});
を変更した場合、それは動作します。なぜこれが構文的な砂糖の変化と異なって機能するのか、私に説明することができますか?
砂糖だけではないので、 '=>'は新しいコンテキストを作成せず、 'this'もありません。 –
'function()'バージョンもラムダです。 – nnnnnn
http://stackoverflow.com/documentation/javascript/186/functions/720/arrow-functions#t=201608012207550133428 –