Javascript 在同一个';返回值对象';
如何访问同一“返回值对象”中的javascript函数,且父函数未命名 这是一个代码示例Javascript 在同一个';返回值对象';,javascript,Javascript,如何访问同一“返回值对象”中的javascript函数,且父函数未命名 这是一个代码示例 function ($http, $rootScope, $timeout, $location, config, $q, sessionService) { return { _get_user_approval_mode: function (data) { var defer = $q.defer(); this.prepare
function ($http, $rootScope, $timeout, $location, config, $q, sessionService) {
return {
_get_user_approval_mode: function (data) {
var defer = $q.defer();
this.prepareHttpCall($http, true);
$http.post(config.CLIENT_API_ROOT + 'user-approval-mode', {
params: data
})
.then(function (response) {
defer.resolve(response);
}).catch(function (error) {
if (error_handler(error) === "") { //Getting on this line since error_handler() is undefined
defer.reject(error);
}
});
return defer.promise;
},
error_handler(error) {
console.log('error received in handler');
console.log(error);
if (error.status == "400") {
$('#somethingWrong').modal('show');
$rootScope.errorHandleMessage = error.data.reason;
} else if (error.status == "401" && error.data.message == "Unauthorized" || error.status == "401" && error.data.message == "The incoming token has expired") {
// $('body').removeClass('modal-open');
// $('.modal-backdrop').remove();
$location.path('/login');
} else if (error.status + "".match('5\d{2}')) {
$('#somethingWrong').modal('show');
$rootScope.errorHandleMessage = "Sorry! something went wrong, please try after sometime.";
} else {
return "";
}
return "error handled";
}
}
}
我在尝试调用“error\u handler”函数时,在函数“\u get\u user\u approval\u mode”中遇到了未定义的错误,如上面代码中所述。在不知道如何调用
\u get\u user\u approval\u mode
的情况下(即不知道它的这个值将是什么),是“最安全的”解决方案是将对象分配给变量并访问该变量:
function ($http, $rootScope, $timeout, $location, config, $q, sessionService) {
var obj = {
_get_user_approval_mode: function (data) {
var defer = $q.defer();
this.prepareHttpCall($http, true);
$http.post(config.CLIENT_API_ROOT + 'user-approval-mode', {
params: data
})
.then(function (response) {
defer.resolve(response);
}).catch(function (error) {
if (obj.error_handler(error) === "") {
defer.reject(error);
}
});
return defer.promise;
},
error_handler(error) {
// ...
}
};
return obj;
}
但是,如果error\u handler
实际上不必是对象上的方法,因为它不是从其他代码调用的,那么将其定义为单独的函数将更有意义。该代码示例甚至不是有效的JavaScript,error\u handler(error){
在这一点上没有意义,应该是error\u handler:function(error){
也是。但这当然不能解决您的问题-这些函数唯一有名称的地方是在您返回的对象的上下文中。@misorude:ES2015引入了对象文字的方法语法。@FelixKling啊,不知道这一点。(但我至少希望人们能决定一种或另一种语法,但不能同时使用这两种语法。)@misorude:我必须同意这一点:DThanks Felix-这很有效,而且你的评论也是正确的-我应该这么想。真的很感谢你的帮助-谢谢