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

オブジェクトがすでに存在し、そのうちの1つしかない場合は、プロトタイプは必要ありません。オブジェクトに直接メソッドを追加するだけです。

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 に答える