Javascript ES6 class 变量
Javascript ES6 class variables
使用 Mongoose 探索 Javascript ES6 classes 并且在访问 class 变量时遇到问题。我想在 cursor.on(data)
事件中使用 this.name
,引用在 class 的构造函数中声明的变量。我怎样才能做到这一点?
'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')
});
}
}
值得注意的是,这不是一个 "class variable",它是一个实例变量。
使用 Mongoose 探索 Javascript ES6 classes 并且在访问 class 变量时遇到问题。我想在 cursor.on(data)
事件中使用 this.name
,引用在 class 的构造函数中声明的变量。我怎样才能做到这一点?
'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')
});
}
}
值得注意的是,这不是一个 "class variable",它是一个实例变量。