Skip to content

Commit 869a3ba

Browse files
committed
docs(bom): edit location
1 parent 6078052 commit 869a3ba

1 file changed

Lines changed: 29 additions & 7 deletions

File tree

docs/bom/location.md

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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
330340
var params = new URLSearchParams({'foo': 1 , 'bar': 2});
341+
331342
for (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);
421432
params.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

Comments
 (0)