Javascript的ES6类variables

用Mongoose探索Javascript ES6类,并在访问类variables时遇到困难。 我想在引用在类的构造函数中声明的variables的cursor.on(data)事件中使用this.name 。 我怎样才能做到这一点?

 'use strict'; const Mongo = require('../mongo') class Example { constructor() { this.name = 'Test Class'; } export(docId, callback) { console.log('In export' + docId); const cursor = Mongo.findDocById(docId); console.log(this.name); // Prints "Test Class" cursor.on('data', function (document) { console.log(document); console.log(this.name); // Prints "undefined" }); cursor.on('close', function () { Mongo.close(); callback(null, 'Success') }); } } 

如果您使用的是ES6,请使用 ES6箭头函数,以正确保留this上下文:

 class Example { constructor() { this.name = 'Test Class'; } export(docId, callback) { console.log('In export' + docId); const cursor = Mongo.findDocById(docId); console.log(this.name); // Prints "Test Class" cursor.on('data', document => { console.log(document); console.log(this.name); // Prints "undefined" }); cursor.on('close', () => { Mongo.close(); callback(null, 'Success') }); } } 

值得注意的是,这不是一个“类variables”,它是一个实例variables。