javascript - 参数如何传递给这个匿名函数?

标签 javascript

我不太明白下面代码中下面一行的约定

request.transformRequest = internal.transformRequest;

这实际上是调用 internal.transformRequest 函数,还是只是将该函数设置为等于 request 对象中的同名方法?我认为它正在调用该函数,因为 transformRequest 从未在代码中的其他任何地方调用,但是 datagetHeaders 的参数是如何传入的案例?

internal.transformResourceUrl = function (url) {
        if (url.substr(-1) === '/')
            url = url.substr(0, url.length - 1);
        return url + '.json';
    };

    internal.transformRequest = function (data, getHeaders) {
        // If this is not an object, defer to native stringification.
        if (!angular.isObject(data)) {
            return (data === null) ? '' : data.toString();
        }

        var buffer = [];
        // Serialize each key in the object.
        for (var name in data) {
            if (!data.hasOwnProperty(name)) continue;
            var value = data[name];
            buffer.push(
                encodeURIComponent(name) +
                '=' +
                encodeURIComponent((value === null) ? '' : value )
            );
        }

        // Serialize the buffer and clean it up for transportation.
        var source = buffer
            .join('&')
            .replace(/%20/g, '+')
        ;

        return source;
    };

    internal.generateRequest = function (method, resource, data, account) {
        method = method.toUpperCase();

        if (!angular.isString(account) || account.length < 1)
            account = '_default';

        resource = 'Accounts/' +
            accounts[account] + '/' +
            internal.transformResourceUrl(resource);

        var request = {
            method: method,
            url: apiEndpoint + resource,
            headers: {
                'Authorization': 'Basic ' + credentialsB64
            }
        };

        if (method === 'POST' || method === 'PUT') {
            if (data) request.data = data;
            request.transformRequest = internal.transformRequest;
            request.headers['content-type'] = 'application/x-www-form-urlencoded; charset=utf-8';
        } else if (data) {
            request.params = data;
        }
        return $http(request);
    };

最佳答案

“这实际上是调用internal.transformRequest函数,还是只是将函数设置为等于方法”
“我认为它正在调用该函数,因为在代码中的其他任何地方都不会调用transformRequest”

如何调用 internal.transformRequest 方法

第 7 行:transformRequest :method(function) 已添加到 internal :object

internal.transformRequest = function (data, getHeaders) {


第 54 行:requesttransformRequest 属性:对象分配给上述方法

request.transformRequest = internal.transformRequest;


第 59 行: $http() :通过 request 调用函数:现在拥有的对象 transformRequest :指向 internal.transformRequest 的方法

return $http(request);

关于javascript - 参数如何传递给这个匿名函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39329599/

相关文章:

javascript - Highcharts:使 X 轴和 Y 轴相交于 0

javascript - 如何防止 switch e.which 内的默认情况

javascript - 基础顶栏 : Toggle drop-down on click instead of hover

javascript - 为什么 JavaScript Math.log(1.001) 返回错误值?

JavaScript OOPS 问题

javascript - For 循环中的 onClick 事件

javascript - 加载 bootstrap 4 css 时,侧边栏导航折叠显示空白屏幕

php - Codeigniter session 异常行为

javascript - 如何在 Highcharts 中修改 Column stacked percent Chart

javascript - 如何创建动态变量并分配数据