簡體   English   中英

如何將參數傳遞給該匿名函數?

[英]How are parameters being passed to this anonymous function?

我從下面的代碼不太了解以下行的約定

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行transformRequest request :object的transformRequest屬性分配給上述方法

request.transformRequest = internal.transformRequest;


第59行$http() :function被request :object調用,后者現在具有transformRequest :method指向internal.transformRequest

return $http(request);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM