原生js替换URLSearchParams方法
时间: 2024-06-21 22:03:24 浏览: 173
JS的replace方法
在JavaScript中,原生的`URLSearchParams`对象是用于处理查询参数的,特别是从URL中解析和构造查询字符串。如果你想要替换它的功能,可以使用自定义函数来模拟类似的行为。这里是一个简单的例子,展示如何手动创建一个类似`URLSearchParams`的方法:
```javascript
function customSearchParams(params) {
let obj = {};
if (typeof params === 'string') {
params = new URLSearchParams(params);
} else if (!Array.isArray(params)) {
throw new Error('Invalid input, expecting an array or a string');
}
for (let [key, value] of params.entries()) {
obj[key] = Array.isArray(value) ? value : [value];
}
return {
append: function(key, value) {
obj[key].push(value);
return this;
},
delete: function(key) {
if (obj.hasOwnProperty(key)) {
obj[key] = [];
}
return this;
},
get: function(key) {
return obj[key] || null;
},
getAll: function(key) {
return obj[key] || [];
},
has: function(key) {
return obj.hasOwnProperty(key);
},
set: function(key, value) {
obj[key] = [value];
return this;
},
toString: function() {
let result = [];
for (let key in obj) {
for (let value of obj[key]) {
result.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);
}
}
return result.join('&');
}
};
}
// 使用示例
const urlParams = customSearchParams('key1=value1&key2=value2');
console.log(urlParams.get('key1')); // 输出 "value1"
urlParams.append('key1', 'value1a');
console.log(urlParams.toString()); // 输出 "key1=value1&key1=value1a&key2=value2"
```
这个自定义函数实现了`append`, `delete`, `get`, `getAll`, `has`, `set`和`toString`等主要方法,但请注意,这只是一个简化版本,可能不如`URLSearchParams`完全兼容浏览器行为。如果你需要更复杂的查询字符串操作,还是推荐使用原生的`URLSearchParams`。
阅读全文