在对象上调用方法

在对象上调用方法

我想记录在对象上调用方法的结果。

当前脚本将函数的结果记录在属性token中,字面意思是结果是已定义的函数。

我在这里做错了什么?非常感谢!

   $(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);



    });

最佳答案

尝试更换

        token: function () {
            var token;
            $.getJSON(ApiSettings.uriGetToken, processData);
            function processData(data) {
                token = data.access_token;
            }
            return token;
        }




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

08-04 17:14