[英]How are parameters being passed to this anonymous function?
我從下面的代碼不太了解以下行的約定
request.transformRequest = internal.transformRequest;
這實際上是在調用internal.transformRequest
函數,還是只是將函數設置為與request
對象中的同名方法相等? 我認為它正在調用該函數,是因為從未在代碼中的任何其他位置調用transformRequest
,但是在這種情況下如何傳遞data
和getHeaders
的參數?
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.