@@ -171,27 +171,13 @@ decodeURIComponent('%E6%98%A5%E8%8A%82')
171
171
// "春节"
172
172
```
173
173
174
- ## URL 对象
174
+ ## URL 接口
175
175
176
- ` URL ` 对象是浏览器的原生对象,可以用来构造、解析和编码 URL。一般情况下,通过` window.URL ` 可以拿到这个对象。
177
-
178
- ` <a> ` 元素和` <area> ` 元素都部署了这个接口。这就是说,它们的 DOM 节点对象可以使用 URL 的实例属性和方法。
179
-
180
- ``` javascript
181
- var a = document .createElement (' a' );
182
- a .href = ' http://example.com/?foo=1' ;
183
-
184
- a .hostname // "example.com"
185
- a .search // "?foo=1"
186
- ```
187
-
188
- 上面代码中,` a ` 是` <a> ` 元素的 DOM 节点对象。可以在这个对象上使用 URL 的实例属性,比如` hostname ` 和` search ` 。
176
+ ` URL ` 接口是一个构造函数,浏览器原生提供,可以用来构造、解析和编码 URL。一般情况下,通过` window.URL ` 可以拿到这个构造函数。
189
177
190
178
### 构造函数
191
179
192
- ` URL ` 对象本身是一个构造函数,可以生成 URL 实例。
193
-
194
- 它接受一个表示 URL 的字符串作为参数。如果参数不是合法的 URL,会报错。
180
+ ` URL ` 作为构造函数,可以生成 URL 实例。它接受一个表示 URL 的字符串作为参数。如果参数不是合法的 URL,会报错。
195
181
196
182
``` javascript
197
183
var url = new URL (' http://www.example.com/index.html' );
@@ -283,7 +269,7 @@ url.href // "http://example.com/index2.html#part2"
283
269
284
270
** (1)URL.createObjectURL()**
285
271
286
- ` URL.createObjectURL ` 方法用来为上传/下载的文件、流媒体文件生成一个 URL 字符串。这个字符串代表了` File ` 对象或` Blob ` 对象的 URL。
272
+ ` URL.createObjectURL() ` 方法用来为上传/下载的文件、流媒体文件生成一个 URL 字符串。这个字符串代表了` File ` 对象或` Blob ` 对象的 URL。
287
273
288
274
``` javascript
289
275
// HTML 代码如下
@@ -306,19 +292,19 @@ function handleFiles(files) {
306
292
}
307
293
```
308
294
309
- 上面代码中,` URL.createObjectURL ` 方法用来为上传的文件生成一个 URL 字符串,作为` <img> ` 元素的图片来源。
295
+ 上面代码中,` URL.createObjectURL() ` 方法用来为上传的文件生成一个 URL 字符串,作为` <img> ` 元素的图片来源。
310
296
311
297
该方法生成的 URL 就像下面的样子。
312
298
313
299
``` javascript
314
300
blob: http: // localhost/c745ef73-ece9-46da-8f66-ebes574789b1
315
301
```
316
302
317
- 注意,每次使用` URL.createObjectURL ` 方法,都会在内存里面生成一个 URL 实例。如果不再需要该方法生成的 URL 字符串,为了节省内存,可以使用` URL.revokeObjectURL() ` 方法释放这个实例。
303
+ 注意,每次使用` URL.createObjectURL() ` 方法,都会在内存里面生成一个 URL 实例。如果不再需要该方法生成的 URL 字符串,为了节省内存,可以使用` URL.revokeObjectURL() ` 方法释放这个实例。
318
304
319
305
** (2)URL.revokeObjectURL()**
320
306
321
- ` URL.revokeObjectURL ` 方法用来释放` URL.createObjectURL ` 方法生成的 URL 实例。它的参数就是` URL.createObjectURL ` 方法返回的 URL 字符串。
307
+ ` URL.revokeObjectURL() ` 方法用来释放` URL.createObjectURL() ` 方法生成的 URL 实例。它的参数就是` URL.createObjectURL() ` 方法返回的 URL 字符串。
322
308
323
309
下面为上一段的示例加上` URL.revokeObjectURL() ` 。
324
310
@@ -337,7 +323,7 @@ function handleFiles(files) {
337
323
}
338
324
```
339
325
340
- 上面代码中,一旦图片加载成功以后,为本地文件生成的 URL 字符串就没用了,于是可以在` img.onload ` 回调函数里面,通过` URL.revokeObjectURL ` 方法卸载这个 URL 实例。
326
+ 上面代码中,一旦图片加载成功以后,为本地文件生成的 URL 字符串就没用了,于是可以在` img.onload ` 回调函数里面,通过` URL.revokeObjectURL() ` 方法卸载这个 URL 实例。
341
327
342
328
## URLSearchParams 对象
343
329
@@ -390,14 +376,6 @@ var foo = url.searchParams.get('foo') || 'somedefault';
390
376
391
377
上面代码中,URL 实例的` searchParams ` 属性就是一个` URLSearchParams ` 实例,所以可以使用` URLSearchParams ` 接口的` get ` 方法。
392
378
393
- DOM 的` a ` 元素节点的` searchParams ` 属性,就是一个` URLSearchParams ` 实例。
394
-
395
- ``` javascript
396
- var a = document .createElement (' a' );
397
- a .href = ' https://example.com?filter=api' ;
398
- a .searchParams .get (' filter' ) // "api"
399
- ```
400
-
401
379
` URLSearchParams ` 实例有遍历器接口,可以用` for...of ` 循环遍历(详见《ES6 标准入门》的《Iterator》一章)。
402
380
403
381
``` javascript
@@ -434,15 +412,15 @@ window.location.href = location.pathname + '?' + params;
434
412
435
413
### URLSearchParams.append()
436
414
437
- ` append ` 方法用来追加一个查询参数。它接受两个参数,第一个为键名,第二个为键值,没有返回值。
415
+ ` append() ` 方法用来追加一个查询参数。它接受两个参数,第一个为键名,第二个为键值,没有返回值。
438
416
439
417
``` javascript
440
418
var params = new URLSearchParams ({' foo' : 1 , ' bar' : 2 });
441
419
params .append (' baz' , 3 );
442
420
params .toString () // "foo=1&bar=2&baz=3"
443
421
```
444
422
445
- ` append ` 方法不会识别是否键名已经存在。
423
+ ` append() ` 方法不会识别是否键名已经存在。
446
424
447
425
``` javascript
448
426
var params = new URLSearchParams ({' foo' : 1 , ' bar' : 2 });
@@ -454,7 +432,7 @@ params.toString() // "foo=1&bar=2&foo=3"
454
432
455
433
### URLSearchParams.delete()
456
434
457
- ` delete ` 方法用来删除指定的查询参数。它接受键名作为参数。
435
+ ` delete() ` 方法用来删除指定的查询参数。它接受键名作为参数。
458
436
459
437
``` javascript
460
438
var params = new URLSearchParams ({' foo' : 1 , ' bar' : 2 });
@@ -464,7 +442,7 @@ params.toString() // "foo=1"
464
442
465
443
### URLSearchParams.has()
466
444
467
- ` has ` 方法返回一个布尔值,表示查询字符串是否包含指定的键名。
445
+ ` has() ` 方法返回一个布尔值,表示查询字符串是否包含指定的键名。
468
446
469
447
``` javascript
470
448
var params = new URLSearchParams ({' foo' : 1 , ' bar' : 2 });
@@ -474,7 +452,7 @@ params.has('baz') // false
474
452
475
453
### URLSearchParams.set()
476
454
477
- ` set ` 方法用来设置查询字符串的键值。
455
+ ` set() ` 方法用来设置查询字符串的键值。
478
456
479
457
它接受两个参数,第一个是键名,第二个是键值。如果是已经存在的键,键值会被改写,否则会被追加。
480
458
@@ -509,7 +487,7 @@ window.history.replaceState({}, '', location.pathname + `?` + params);
509
487
510
488
### URLSearchParams.get(),URLSearchParams.getAll()
511
489
512
- ` get ` 方法用来读取查询字符串里面的指定键。它接受键名作为参数。
490
+ ` get() ` 方法用来读取查询字符串里面的指定键。它接受键名作为参数。
513
491
514
492
``` javascript
515
493
var params = new URLSearchParams (' ?foo=1' );
@@ -528,7 +506,7 @@ params.get('foo') // "3"
528
506
529
507
上面代码中,查询字符串有三个` foo ` 键,` get ` 方法返回最前面的键值` 3 ` 。
530
508
531
- ` getAll ` 方法返回一个数组,成员是指定键的所有键值。它接受键名作为参数。
509
+ ` getAll() ` 方法返回一个数组,成员是指定键的所有键值。它接受键名作为参数。
532
510
533
511
``` javascript
534
512
var params = new URLSearchParams (' ?foo=1&foo=2' );
@@ -539,7 +517,7 @@ params.getAll('foo') // ["1", "2"]
539
517
540
518
### URLSearchParams.sort()
541
519
542
- ` sort ` 方法对查询字符串里面的键进行排序,规则是按照 Unicode 码点从小到大排列。
520
+ ` sort() ` 方法对查询字符串里面的键进行排序,规则是按照 Unicode 码点从小到大排列。
543
521
544
522
该方法没有返回值,或者说返回值是` undefined ` 。
545
523
0 commit comments