是否可以在窗口或window.location上进行原型设计?

时间:2012-09-22 07:12:20

标签: javascript

我想编写一个属于location类的查询解析方法,但是没有运气

window.location.prototype

window.prototype

我的目标是做一些事情:

window.location.prototype.parseQuery = function(key){
   //run a test on this.search to see if it contains key and return the val
}

窗口是不可变的吗?或者我只是没有正确引用它?

TIA

3 个答案:

答案 0 :(得分:2)

当对象已经存在且只有其中一个时,您不需要原型。您只需将方法直接添加到对象即可。

window.parseQuery = function() { /* your code here */};

window.location.parseQuery = function() { /* your code here */};

此外,window对象是浏览器中的全局对象,因此任何全局函数都已经是window对象上的方法。

答案 1 :(得分:2)

您应该直接在window.location

上添加该属性
window.location.parseQuery = function(key){
   //run a test on this.search to see if it contains key and return the val
}

prototype是Function的属性,而window.location不是函数。

答案 2 :(得分:1)

呸!在询问之前应该再运行一些测试...

答案是Window.prototype。适用于Chrome,尚未在其他地方进行过测试。

根据给出的答案,似乎没有必要在Window上进行原型设计,因为它是一个单一的全局对象。所以这是我的解决方案......

window.location.getQueryItem = function(key){
            if(this.search.indexOf(key + "=") != -1){
                reg = new RegExp(key + '=(.*?)(\&|$)', 'i');
                return this.search.match(reg)[1];
            }
                    return null;
        }