【发布时间】:2014-12-10 13:48:02
【问题描述】:
我正在用 JavaScript 构建一个应用程序。我试图弄清楚如何在 JavaScript 闭包中使用this。目前,我有以下代码:
var ExternalResource = require('ExternalResource');
function MyObject() {
}
MyObject.prototype.state = "Closed";
MyObject.prototype.execute = function(options, callback) {
if (!options) {
if (callback) {
callback(-1);
}
return;
}
try {
this.state = 'Connecting';
var client = new ExternalResource.Client();
client.connect(function(err) {
if (err) {
this.state = 'Failed';
if (callback) {
callback(-1, err);
}
} else {
this.state = 'Good';
if (callback) {
callback(1);
}
}
});
} catch (ex) {
if (callback) {
callback(-1, ex);
}
}
};
我目前正在通过 Jasmine 测试执行 execute。
it(' - Connect to a local instance', function(done) {
var myObject = new MyObject();
myObject.execute({}, function() {
expect(myObject.state).toBe('Good');
});
});
执行此测试时,我看到以下错误:
Expected 'Connecting' to be 'Good'.
我确信这与在 connect 回调中使用 this.state 有关。不过,我不确定。
谢谢!
【问题讨论】:
标签: javascript