我使用节点v0.11.14-夜间-20140819-前在Windows与harmony
标志。
我有一个在它的原型定义了两个方法的JavaScript对象:
function User (args) {
this.service= new Service(args);
}
User.prototype.method2 = function (response) {
console.log(this); // <= UNDEFINED!!!!
};
User.prototype.method1 = function () {
.............
this.service.serviceMethod(args)
.then(this.method2)
.catch(onRejected);
};
function onRejected(val) {
console.log(val);
}
serviceMethod
的Service
对象返回一个承诺。
当我使用User
对象象下面这样:
let user = new User(args);
user.method1();
this
在method2
对象的User
结束了undefined
时称为then
一次承诺满足。
我试图同时使用ES6和蓝鸟承诺的实现。
为什么this
最终被undefined
在这种情况下?