@@ -277,9 +277,11 @@ function handleFiles(files) {
277277
278278## URLSearchParams 对象
279279
280- ` URLSearchParams ` 对象是浏览器的原生对象,用来构造、解析和处理 URL 的查询字符串。
280+ ### 概述
281281
282- 它本身也是一个构造函数,可以生成实例。参数可以为查询字符串,起首的问号` ? ` 有没有都行,也可以为对应查询字符串的数组或对象。
282+ ` URLSearchParams ` 对象是浏览器的原生对象,用来构造、解析和处理 URL 的查询字符串(即 URL 问号后面的部分)。
283+
284+ 它本身也是一个构造函数,可以生成实例。参数可以为查询字符串,起首的问号` ? ` 有没有都行,也可以是对应查询字符串的数组或对象。
283285
284286``` javascript
285287// 方法一:传入字符串
@@ -315,19 +317,28 @@ fetch('https://example.com/api', {
315317
316318上面代码中,` fetch ` 命令向服务器发送命令时,可以直接使用` URLSearchParams ` 实例。
317319
318- URL 实例的 ` searchParams ` 属性就是一个 ` URLSearchParams ` 实例,只不过这个实例是只读的 。
320+ ` URLSearchParams ` 可以与 ` URL ` 接口结合使用 。
319321
320322``` javascript
321- var url = new URL (' http://example.com/?foo=1 ' );
322- url .searchParams .get (' foo' ) // "1"
323+ var url = new URL (window . location );
324+ var foo = url .searchParams .get (' foo' ) || ' somedefault ' ;
323325```
324326
325- 上面代码中,URL 实例的` searchParams ` 属性可以使用` URLSearchParams ` 的` get ` 方法。
327+ 上面代码中,URL 实例的` searchParams ` 属性就是一个` URLSearchParams ` 实例,所以可以使用` URLSearchParams ` 接口的` get ` 方法。
328+
329+ DOM 的` a ` 元素节点的` searchParams ` 属性,就是一个` URLSearchParams ` 实例。
330+
331+ ``` javascript
332+ var a = document .createElement (' a' );
333+ a .href = ' https://example.com?filter=api' ;
334+ a .searchParams .get (' filter' ) // "api"
335+ ```
326336
327337` URLSearchParams ` 实例有遍历器接口,可以用` for...of ` 循环遍历(详见《ES6 标准入门》的《Iterator》一章)。
328338
329339``` javascript
330340var params = new URLSearchParams ({' foo' : 1 , ' bar' : 2 });
341+
331342for (var p of params) {
332343 console .log (p[0 ] + ' : ' + p[1 ]);
333344}
@@ -337,7 +348,7 @@ for (var p of params) {
337348
338349` URLSearchParams ` 没有实例属性,只有实例方法。
339350
340- ## URLSearchParams.toString()
351+ ### URLSearchParams.toString()
341352
342353` toString ` 方法返回实例的字符串形式。
343354
@@ -421,6 +432,17 @@ params.set('foo', 3);
421432params .toString () // "foo=3"
422433```
423434
435+ 下面是一个替换当前 URL 的例子。
436+
437+ ``` javascript
438+ // URL: https://example.com?version=1.0
439+ var params = new URLSearchParams (location .search .slice (1 ));
440+ params .set (' version' , 2.0 );
441+
442+ window .history .replaceState ({}, ' ' , location .pathname + ` ?` + params);
443+ // URL: https://example.com?version=2.0
444+ ```
445+
424446### URLSearchParams.get(),URLSearchParams.getAll()
425447
426448` get ` 方法用来读取查询字符串里面的指定键。它接受键名作为参数。
0 commit comments