在 Javascript 中设置获取标头时,哪种做法更好?

4 javascript http-headers fetch-api

使用 new Headers() 对象为获取设置标头有什么区别,如下所示。

const headers = new Headers()
headers.set('User','Bob')
Run Code Online (Sandbox Code Playgroud)

与使用更少的代码分配所需的标头并且不使用新的 Header() 类相比。

const headers = { User: 'Bob'}
Run Code Online (Sandbox Code Playgroud)

在 JavaScript 中执行 a 时fetch
如果两者都获得相似的结果,那么在获取数据时哪一种是最佳实践?

e9x*_*e9x 5

Headers对象的行为类似于 a Map,但主要区别在于标头键不区分大小写。

标题:

var headers = new Headers();

headers.set('CONTENT-tYpE', 'text/html');

console.log(headers.get('content-type')); // text/html
Run Code Online (Sandbox Code Playgroud)

地图:

var headers = new Map();

headers.set('CONTENT-tYpE', 'text/html');

console.log(headers.get('content-type')); // undefined
Run Code Online (Sandbox Code Playgroud)

目的:

var headers = {};

headers['CONTENT-tYpE'] = 'text/html';

console.log(headers['content-type']); // undefined
Run Code Online (Sandbox Code Playgroud)

(当传递给 fetch 或 http 请求时,无论数据类型如何,所有标头名称都会标准化)

  • 另一个小区别是 `Headers` 有一个 `.append()` 方法,使用它可以为同一个 header 设置多个值,而使用 `Map` 则不能这样做 (2认同)