gpt4 book ai didi

javascript - 使用_this引用父类方法

转载 作者:太空宇宙 更新时间:2023-11-04 00:45:42 25 4
gpt4 key购买 nike

当从回调函数调用父类函数时,我使用前缀 _this 来引用它。但是,当我运行 Node 服务器时,我收到错误消息“_this 未定义”。实际上,我直接从我正在学习的 MEAN 堆栈书中提取了这段代码,但我似乎无法解决这个问题。

父函数

var getErrorMessage = function(err){
var message = '';
if(err.code){
switch(err.code){
case 11000:
case 11001:
message = 'Username already exists';
break;
default:
message = 'Something went Wrong';
}
} else{
for(var errName in err.errors){
if(err.errors[errName].message){
message = err.errors[errName].message;
}
}
}

return message;
};

稍后在回调中调用函数

exports.saveOAuthUserProfile = function(req, profile, done){
User.findOne({provider: profile.provider, providerId: profile.providerId}, function(err,user){
if(err){
return done(err);
} else{
if(!user){
var possibleUsername = profile.username || ((profile.email) ? profile.email.split('@')[0] : '');

User.findUniqueUsername(possibleUsername, null, function(availableUsername){
profile.username = availableUsername;

user = new User(profile);

user.save(function(err){
if(err){
var message = _this.getErrorMessage(err);
req.flash('error',message);

return res.redirect('/signup');
} else{
return done(err,user);
}
});
});
} else{
return done(err, user);
}
}
});
};

最佳答案

继续评论

在全局范围内的父函数之后声明如下。

var _this = {};
_this.getErrorMessage = getErrorMessage; // Passing the function reference

稍后回调

_this.getErrorMessage(/*YOUR_PARAMETERS_HERE*/);
<小时/>

或者,您可以完全删除 _this 并直接调用该函数,因为父函数位于全局范围内。

注意:的理解是父函数和回调都位于同一个 .js 文件中,并且父函数在该 的全局范围内声明。 js文件,并且未声明为GLOBAL.getErrorMessage,这使得它在客户端显式全局为window对象。

关于javascript - 使用_this引用父类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34840197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com