Javascript 对对象调用方法
我想记录在对象上调用方法的结果 当前脚本将函数的结果记录在属性Javascript 对对象调用方法,javascript,Javascript,我想记录在对象上调用方法的结果 当前脚本将函数的结果记录在属性标记中,我的意思是结果就是定义的函数 我做错了什么?非常感谢 $(document).ready(function () { // General Settings var ApiSettings = { clientId: 'aaa', clientSecret: 'bbb', token: functi
标记中,我的意思是结果就是定义的函数
我做错了什么?非常感谢
$(document).ready(function () {
// General Settings
var
ApiSettings = {
clientId: 'aaa',
clientSecret: 'bbb',
token: function () {
var token;
$.getJSON(ApiSettings.uriGetToken, processData);
function processData(data) {
token = data.access_token;
}
return token;
}
}
ApiSettings.uriGetToken = 'https://ccc.com/oauth/token?grant_type=client_credentials&client_id=' + encodeURIComponent(ApiSettings.clientId) + '&client_secret=' + encodeURIComponent(ApiSettings.clientSecret);
console.log(ApiSettings);
console.log(ApiSettings.uriGetToken);
var test = ApiSettings.token;
console.log(test);
});
我想你有两个问题
1) 在使用processData函数之前,需要定义它
// $.getJSON(ApiSettings.uriGetToken, processData);
// function processData(data) {
// token = data.access_token;
// }
// Becomes:
function processData(data) {
token = data.access_token;
}
$.getJSON(ApiSettings.uriGetToken, processData);
2) 您需要调用令牌方法
// var test = ApiSettings.token;
// Becomes:
var test = ApiSettings.token(); // Note the new brackets.
试着替换
token: function () {
var token;
$.getJSON(ApiSettings.uriGetToken, processData);
function processData(data) {
token = data.access_token;
}
return token;
}
与
它应该内联执行您的函数
或者,您可以将URI作为参数传递给令牌函数
token: function (tokenURI) {
var token;
$.getJSON(tokenURI, processData);
function processData(data) {
token = data.access_token;
}
return token;
}
然后打电话
ApiSettings.token('https://ccc.com/oauth/token?.......');
把你的代码从就绪部分拿出来,它就会工作。
我在我的chrome浏览器的控制台上测试了它,它运行正常。
作用域可能有问题。感谢您的点击,现在我收到一个错误Uncaught TypeError:调用$.getJSON(ApiSettings.Urightoken,processData)时无法读取undefined的属性'Urightoken';任何关于如何解决这个问题的想法,我相信这与我最初的问题无关,但我会感谢你的帮助,谢谢@失去无法工作的资源ApiSettings.Urightoken
直到稍后才会设置。感谢您的评论lostsource,我能帮您解决这个问题吗?@RB question是“在对象上调用方法”,如果方法失败,那是另一个问题
ApiSettings.token('https://ccc.com/oauth/token?.......');