2011-07-18 7 views
0

私はこのようなオブジェクトがあります。何らかの理由で

var example = { 
    test1: 10, 
    test2: 20, 
    test3: 30 
} 

を、私はexampleなしtest#変数を使用していたので、私はこのようなwindowオブジェクトを拡張(jQueryの使用):

$.extend(window, window, example) 

しかしを、いつでもこの関数が呼び出され、ページがリフレッシュされました。

そして、もう一つの質問、私は同じようにdocumentを拡張しようとした場合、いくつかのエラーは次のように発生します(Chromeの)

Error: NAMESPACE_ERR: DOM Exception 14

なぜですか?そして、オブジェクト(名前空間)名なしで変数を使用する方法はありますか?

window.location = window.location; 

そして、それはページを更新します:

+1

は、なぜあなたは二度 'window'を渡していますか? '$ .extend(window、example)'だけを実行すればうまくいきますか? – aroth

答えて

7

あなた$.extendコールは、この同等のものを行います。

$.extend関数は基本的に、第2引数から最後の引数までのすべてのプロパティを第1引数にコピーし、(更新された)第1引数を返します。あなたの2番目の引数がwindowの場合、locationプロパティがあり、何かをwindow.locationに割り当てると、ページが変更され、新しい値と古い値が同じ場合は、現在のページが更新されます。限り

$.extend(window, example); 

を「とオブジェクト(名前空間)の名前なしで変数を使用する方法はありますか?」:あなたはwindowexampleですべてのプロパティを追加したい場合は

、ちょうどこれを行います行く、ちょうどwindowのプロパティとして、あなたの変数を追加して、あなたは接頭辞せずにアクセスできるようになります:

window.where_is = "pancakes house?"; 
alert(where_is); 

例えば:http://jsfiddle.net/ambiguous/T7cNx/

+0

それは素晴らしい答えです。私は '$ .extend(window、example)'を使うのを忘れていました。とにかく、私は新しい情報を得ました。ありがとうございました! –

関連する問題