javascript の「window」オブジェクトに任意の属性を追加できますか? 何かのようなもの:
window.my_own_attr = "my_value"
ライブラリに副作用はありますか?また、クロスブラウザ互換性はありますか?
javascript の「window」オブジェクトに任意の属性を追加できますか? 何かのようなもの:
window.my_own_attr = "my_value"
ライブラリに副作用はありますか?また、クロスブラウザ互換性はありますか?
javascript の「window」オブジェクトに任意の属性を追加できますか?
はい、あなたが示したように。
ライブラリに副作用はありますか?
いいえ、上書きするプロパティを設定するライブラリを使用しない限り、そうではありません。
また、クロスブラウザ互換性はありますか?
はい、完全に。
そうは言っても、この慣行は一般的に嫌われています。不要なものを上書きしてしまう可能性があります。
すべてのブラウザで、はwindow
JavaScript グローバル名前空間です。すべてのプロパティまたはメソッドは、その名前空間に「存在」します。したがって、プロパティを に割り当てるとwindow
、それは実質的にグローバル変数になります。
例:
window.myConstant = 5;
// note: a var declaration will be a window property too
// note 2: 'let' or 'const' will not be window properties
// below can also be done without 'var'.
var myConstantGlobal = 4;
console.log(`multiply(10) => ${multiply(10)}`);
console.log(`multiply() => ${multiply()}`);
console.log(`multiplyGlobalVar(10)) => ${multiplyGlobalVar(10)}`);
console.log(`multiplyGlobalVar() => ${multiplyGlobalVar()}`);
function multiply(val){
return myConstant * (val || 1);
}
function multiplyGlobalVar(val){
return window.myConstantGlobal * (val || 1);
}
JavaScript フレームワークには注意が必要です。たとえば、 を宣言してフレームワークwindow.JQuery
を使用すると、名前空間が割り当てに置き換えられ、役に立たなくなります。JQuery
JQuery
はい、できますが、一般的にはすべきではありません。
このwindow
オブジェクトは JS のデフォルトの「グローバル」オブジェクトでもあるため、すべてのグローバル変数がそこに追加されます。
既に存在するプロパティを上書きしない限り、何かを壊す可能性は低いですが、 に変数をダンプしwindow
たり、大量のグローバル変数を作成したりするのは悪い習慣と考えられています。
IE では、要素に ID がある場合、そのノードはウィンドウ オブジェクトでプロパティとしてアクセスできます。
<div id="num"></div>
alert(num); //Element
num = 3; //throws exception
var num = 3; //ok
同じ変数名を使用するまで、どのライブラリとも競合せず、すべてのブラウザーで動作しますが、グローバル JS 変数が作成されるため、お勧めしません。