首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >参数是如何传递给这个匿名函数的?

参数是如何传递给这个匿名函数的?
EN

Stack Overflow用户
提问于 2016-09-05 11:26:23
回答 1查看 44关注 0票数 0

我不太理解下面代码中下面一行的约定

代码语言:javascript
复制
request.transformRequest = internal.transformRequest;

这实际上是调用internal.transformRequest函数,还是只是将函数设置为request对象中同名的方法?我认为它是在调用函数,因为代码中的任何地方都不会调用transformRequest,但是在这种情况下,datagetHeaders的参数是如何传递的呢?

代码语言:javascript
复制
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);
    };
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-05 11:49:56

“这实际上是调用internal.transformRequest函数,还是只设置等于方法的函数?”

“我认为它是在调用函数,因为代码中的任何地方都不会调用transformRequest”

internal.transformRequest 方法如何被称为

第7行:transformRequest:方法(函数)添加到internal :object中

代码语言:javascript
复制
internal.transformRequest = function (data, getHeaders) {

第54行:将transformRequest属性request :object赋值给上述方法

代码语言:javascript
复制
request.transformRequest = internal.transformRequest;

第59行:$http() :function是用request :object调用的,该对象现在具有指向internal.transformRequesttransformRequest:方法

代码语言:javascript
复制
return $http(request);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39329599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档