在创建对象时使用找到here的方法并立即尝试访问它们,即使已创建对象,类方法也不可访问。我如何在Node.js中处理OOP并进行异步操作? (我不是那么担心被阻止......这是不一个其他人可以访问的脚本(几乎就像一个cronjob))
修改他们的代码:
// Constructor
function Foo(bar, callback) {
// always initialize all instance properties
this.bar = bar;
this.baz = 'baz'; // default value
callback();
}
// class methods
Foo.prototype.fooBar = function() {
return this.bar;
};
// export the class
module.exports = Foo;
如果我是异步尝试和玩这个
var p1;
var p2;
async.series([
function(callback){
new Foo("Foobar1", function(){
p1 = this;
callback(null, 'one');
});
},
function(callback){
new Foo("Foobar2", function(){
p2 = this;
callback(null, 'two');
});
}
],
// optional callback
function(err, results){
// results is now equal to ['one', 'two']
console.log(p1); // this produces *something*, therefore its set
console.log(p1.fooBar()); // nope!
});
我得到TypeError: Object #<Object> has no method 'fooBar'
我做错了什么?我如何处理异步?
答案 0 :(得分:0)
这与异步无关。这大概是this
不符合您的想法。
在回调中,this
未绑定任何内容,因此根据use strict
,它可以是全局节点对象,也可以是null
。
在构造函数中,尝试callback.call(this)
。