3

我想编写一个属于位置类的查询解析方法,但没有任何运气

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

4

3 回答 3

3

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

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

或者

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

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

于 2012-09-22T07:23:18.393 回答
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是函数的属性,而window.location不是函数。

于 2012-09-22T07:29:59.223 回答
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;
        }
于 2012-09-22T07:19:25.130 回答