2012-09-22 25 views
3

我想寫就屬於位置類查詢解析方法,但我沒有與是否可以在窗口或window.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

回答

2

當物體已經存在並且只有其中一個時,您不需要原型。你可以直接向對象添加一個方法。

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

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

此外,window對象是在瀏覽器中的全局對象所以任何全局函數已經是window對象上的方法。

+0

所以,在這種情況下,Window.prototype.parseQuery = ...和window.parseQuery = ...之間幾乎沒有區別,嗯? –

+0

我不知道'Window.prototype'。我知道的是,跨瀏覽器的方式來做你想要完成的是'window.parseQuery = function(){}'。這裏沒有理由使用原型。 – jfriend00

1

Bah!在詢問之前應該進行一些更多的測試...

答案是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; 
     } 
+0

正如我所說的,它適用於Chrome。我還沒有看過其他地方,雖然提供的答案表明,我不會,因爲正確的方法。 –

+0

我在OSX上的Chrome v21中使用'Window.prototype'方法。 –

+0

我明白了,如果你在控制檯鍵入'Window',它會給你'undefined'。 – xdazz

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是不是一個函數。

+0

是的,謝謝。我現在看到了基於jfriend00的回答。 –

相關問題