解析 URL 参数为对象
url是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
function urlSearch(href) {
let name, value
let str = href
let num = str.indexOf("?")
str = str.substr(num + 1)
let arr = str.split("&")
let json = {}
for (let i = 0
num = arr[i].indexOf("=")
if (num > 0) {
name = arr[i].substring(0, num)
value = arr[i].substr(num + 1)
json[name] = value
return json
function parseParam(url) {
const paramsStr = /.+\?(.+)$/.exec(url)[1];
const paramsArr = paramsStr.split('&');
let paramsObj = {};
paramsArr.forEach(param => {
if (/=/.test(param)) {
let [key, val] = param.split('=');
val = decodeURIComponent(val);
val = /^\d+$/.test(val) ? parseFloat(val) : val;
if (paramsObj.hasOwnProperty(key)) {
paramsObj[key] = [].concat(paramsObj[key], val);
} else {
paramsObj[key] = val;
} else {
paramsObj[param] = true;
return paramsObj;
注:split() 方法用于把一个字符串分割成字符串数组。
stringObject.split(separator,howmany)
separator:必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
howmany 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 stringObject 分割成子串创建的。返回的数组中的字串不包括 separator 自身。
但是,如果 separator 是包含子表达式的正则表达式,那么返回的数组中包括与这些子表达式匹配的字串(但不包括与整个正则表达式匹配的文本)。
字符串模板
字符串模板是针对大批量、多频率操作dom的解决方案,比如我们要根据数据动态创建一个多嵌套的元素并将其插入到页面中,如果我们采用常规创建dom元素的方式进行插,代码量会极其庞大,
所以这里我们提供了一个模板字符串的函数来生成这个模板并最后插入到页面中
function render(template, data) {
const reg = /\{\{(\w+)\}\}/;
if (reg.test(template)) {
const name = reg.exec(template)[1];
template = template.replace(reg, data[name]);
return render(template, data);
return template;
let template = '我是{{name}},年龄{{age}},性别{{sex}}'
let person = {
name: '布兰',
age: 12
render(template, person)
注:test() 方法用于检测一个字符串是否匹配某个模式.
RegExpObject.test(string). string 必需。要检测的字符串。
如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。
调用 RegExp 对象 r 的 test() 方法,并为它传递字符串 s,与这个表示式是等价的:(r.exec(s) != null)。
好啦好啦,到这里差不多就讲完了,可是还有许多没发现的知识点,希望大家多多指出。加油加油!