Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对对象调用方法_Javascript - Fatal编程技术网

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?.......');