javascript - 扩展 window.location 以存储 GET 变量

标签 javascript oop

我目前有一个函数可以获取浏览器窗口 uri,解析出变量并将它们分配给一个变量。这很好,但我想扩展 window.location 来存储这些。这是我的代码,但它似乎不起作用。有人可以解释为什么或如何这样做吗?

window.location.prototype.parameters = function()
{
    var query_string = {}; 
    var query = window.location.search.substring(1); 
    var vars = query.split("&"); 

    for (var i=0;i<vars.length;i++)
    {
        var pair = vars[i].split("="); 

        if (typeof query_string[pair[0]] === "undefined")
        {
            query_string[pair[0]] = pair[1]; 
        }
        else if (typeof query_string[pair[0]] === "string")
        {
            var arr = [ query_string[pair[0]], pair[1] ]; 
            query_string[pair[0]] = arr; 
        }
        else
        { 
            query_string[pair[0]].push(pair[1]); 
        }
    }

    return query_string;

}();

最佳答案

无需使用原型(prototype)。 window.location 只有一个。 以下代码对我有用。只需摆脱原型(prototype)。

window.location.parameters = function(){
var query_string = {}; 
var query = window.location.search.substring(1); 
var vars = query.split("&"); 

for (var i=0;i<vars.length;i++)   {
    var pair = vars[i].split("="); 

    if (typeof query_string[pair[0]] === "undefined")
    {
        query_string[pair[0]] = pair[1]; 
    }
    else if (typeof query_string[pair[0]] === "string")
    {
        var arr = [ query_string[pair[0]], pair[1] ]; 
        query_string[pair[0]] = arr; 
    }
    else
    { 
        query_string[pair[0]].push(pair[1]); 
    }
}

return query_string;
}();

关于javascript - 扩展 window.location 以存储 GET 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2382888/

相关文章:

javascript - 如何在 TypeScript 中模拟一个 'mousemove' 事件并指定 movementX 和 movementY

c++ - 为什么我不能使用 'this->' 访问非静态函数中的静态成员?

java - 一种将可变数据结构声明为输出并实际返回不可变数据结构的方法

c++ - 避免强制转换以访问派生类的专门成员

javascript - 我的应用程序的打印预览中的 data-ng-hide 行为

JavaScript - 从图像的某个区域获取平均颜色

javascript - 如何使用 jquery 虚拟键盘手动聚焦到下一个输入字段?

javascript - D3 对数缩放

java - 带参数的单例类

ASP.NET 对象缓存 - 多少才算太多?