我正在为学校项目创建一个URL解析器。我首先将来自url的完整查询解析为数组,因为查询成员之间用“&”分隔。
var queryString = /\?(\&?\w+\=\w+)+/.exec(urlString))[0].split("&");
每个数组成员看起来像:
arr[i] = "field=value";
我在一个Object构造函数中这样做,我需要返回一个“HTTPObject”。对于赋值,HTTPObject必须具有名为“query”的属性,并且查询应具有许多属性(url中的每个查询字段都有一个属性)。为什么这不起作用?
queryString.forEach(function(element) {
var elementArr = element.split("=");
this.query.elementArr[0] = elementArr[1];
});
答案 0 :(得分:0)
你不能设置这样的属性 - 但你可以使用bracket notation:
试试这个
queryString.forEach(function(element) {
var elementArr = element.split("=");
this.query[elementArr[0]] = elementArr[1];
});
答案 1 :(得分:0)
你非常接近。您可以使用方括号按名称引用对象属性...
var queryString = ["name1=value1", "name2=value2"];
var query = {};
queryString.forEach(function(element) {
var elementArr = element.split("=");
query[elementArr[0]] = elementArr[1];
});
var varName = "name1";
console.log("by variable : " + query[varName]); // can use a variable
console.log("by string : " + query["name1"]); // can use a string
console.log("by propname : " + query.name1); // can hardcode the property name
console.log("query object:");
console.log(query);