URLSearchParams对象用于处理URL中查询字符串,即?之后的部分。

1.语法

其实例对象的用法和Set数据结构类似。实例对象本身是可遍历对象。但是不是遍历器。

  var paramsString = 'q=URLUtils.searchParams&topic=api';
  var searchParams = new URLSearchParams(paramsString);

2. 实例操作方法

1. has(key)

  searchParams.has('topic'); // true

2.get(key)

  searchParams.get('topic'); // 'api'

3.getAll(key)

当同一个键值对应多个值时用该方法

  searchParams.getAll('topic'); // ['api']

4.append(key,value)-增加

  searchParams.append('test', 'testvalue');
  // searchParams.toString()变为
  // "q=URLUtils.searchParams&topic=api&test=testValue"

5delete(key)-删除

会删除所有键值为key的查询参数

  searchParams.delete('test');
  // searchParams.toString()变为
  // "q=URLUtils.searchParams&topic=api"

6. set(key, value) 修改

  searchParams.set('q', 'test');
  // searchParams.toString()变为
  // "q=test&topic=api"

7.toString()

将实例对象变回字符串的形式

3. 实例遍历方法

下面的方法调用都返回一个Iterator对象。可以通过调用next()方法遍历对象。

想要获取预想的结果,需要使用扩展运算符。

1.keys()

  [...searchParams.keys()] // ["q","topic"]

2.value()

  [... searchParams.values()] // ["test", "api"]

3.entries()

因为实例对象本身也是可遍历对象。也可以使用扩展运算符。而且和entries()方法的结果相同。

  [... searchParams.entries()] // [["q", "test"],["topic", "api"]]
  //遍历自身
  [... searchParams] // [["q", "test"],["topic", "api"]]

4. 应用

1. 实例作为POST方法的请求体

该类型的请求体,浏览器会自动添加请求头:

     Content-Type: application/x-www-form-urlencoded;charset=UTF-8

而且,作为请求体的=两侧的数据会被进行URL编码(encodeURIComponent())。

      const data = new URLSearchParams("a=b&c=d");
fetch('/post',{
method: 'POST',
body: data
}).then((result) => console.log(result))

2. 通过URL的实例对象的searchParams属性获取URLSearchParams实例

  const url = new URL(location);
  url.searchParams instanceof URLSearchParams // true

了解URLSearchParams对象的更多相关文章

  1. URLSearchParams对象

    URLSearchParams对象用于处理URL中查询字符串,即?之后的部分. 1.语法 其实例对象的用法和Set数据结构类似.实例对象本身是可遍历对象.但是不是遍历器. var paramsStri ...

  2. ECMA Script 6_对象的扩展

    对象 1. ES6 允许直接写入变量和函数,作为对象的属性和方法 const foo = 'bar'; /*****************属性的优化********************/ con ...

  3. ES6学习笔记(七)对象的新增方法

    1.Object.is() ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===).它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0.J ...

  4. URLSearchParams/FormData

    一.URLSearchParams()(很好用,但有一定兼容问题,未来版本的浏览器中该功能的语法和行为可能随对应的标准文档而改变.) URLSearchParams 接口定义了一些实用的方法来处理 U ...

  5. 《ES6标准入门》(阮一峰)--11.对象的新增方法

    1.Object.is() ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===).它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0.J ...

  6. JavaScript的URLSearchParams方法

    URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串. 一个实现了 URLSearchParams 的对象可以直接用在 for…of 结构中,不需要使用 entries ...

  7. URLSearchParams(鲜为人知处理URL地址的技能)

    最近学习中无意发现url新处理方式,看到之后十分感兴趣就整理了一下. URLSearchParams URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串.参照 URL ...

  8. JavaScript标准参考教材(alpha)--笔记

    一.导论 二.基本语法 1.严格来说var a=1与a=1效果不太一样,delete命令无法删除前者. JavaScirpt是一种动态类型语言,也就是说,变量的类型没有限制,可以赋予各种类型的值. J ...

  9. axios全攻略

    随着 vuejs 作者尤雨溪发布消息,不再继续维护vue-resource,并推荐大家使用 axios 开始,axios 被越来越多的人所了解.本来想在网上找找详细攻略,突然发现,axios 的官方文 ...

  10. vue使用Axios做ajax请求

    vue2.0之后,就不再对vue-resource更新,而是推荐使用axios 1. 安装 axios $ npm install axios 或 $ bower install axios 2. 在 ...

随机推荐

  1. pytorch中LSTM各参数理解

    nn.LSTM(input_dim,hidden_dim,nums_layer,batch_first) 各参数理解: input_dim:输入的张量维度,表示自变量特征数 hidden_dim:输出 ...

  2. Vue中防抖和节流 --来自官方文档

    Vue 没有内置支持防抖和节流,但可以使用 Lodash 等库来实现. 如果某个组件仅使用一次,可以在 methods 中直接应用防抖: <script src="https://un ...

  3. springboot 基本配置文件

    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/game?useUnicode=true&zeroDateTimeBehavior=conv ...

  4. Ewald求和在分子静电势能计算中的应用

    技术背景 分子动力学模拟中,计算周期性边界条件的静电势常被视作计算的瓶颈之一.形式上是比较容易的,例如不考虑周期性边界条件的话,静电势能就是: \[E=\frac{1}{4\pi\epsilon_0} ...

  5. 自定义指令 v-imgerror 当图片的 src 资源 无效 就替换 默认的 src 显示图片

    // 回顾自定义指令 // 作用 : 自定义一些对dom操作的快捷指令 // 前提:指令就是用来操作 dom (v-if /v-show/v-for ....) // 语法:Vue.directive ...

  6. 介绍一下 websocket

    一般的http请求都是短连接,而webpack的使用可以建立长连接 : 什么是 websocket websocket 是一种网络通信协议,是 HTML5 开始提供的一种在单个 TCP 连接上进行全双 ...

  7. 63.CDN优化

    虽然CDN引入组件库可以优化项目,减轻服务器负载,但是在真实的项目开发中不推荐使用CDN : 因为: 1. 使用第三方服务器不稳定 2. 需要后端配置 3. 要知道组件库的全局变量名

  8. MYSQL存储过程-练习3 repeat循环

    MYSQL存储过程-练习3 repeat循环 1 DELIMITER $$ 2 3 CREATE PROCEDURE `sp_repeat`() 4 BEGIN 5 DECLARE i INT; 6 ...

  9. day12-包机制

    包机制 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间. 包语句的语法格式为: 包的本质就是文件夹  package pkg1[.pkg2[.pkg3...]]; 一般公司域名倒置作为 ...

  10. 两小时学会使用dubbo(直接API、spring、注解、springboot)

    最近上新的项目中需要用到dubbo,于是我决定温故知新,决定分享一下Dubbo在各种环境下的使用方式,本篇文章让你两小时就能学会使用dubbo 什么是Dubbo Dubbo是一个分布式.高性能.透明化 ...