Chrome Developer Toolsのコンソールで、window
と入力してEnterキーを押すと、ウィンドウオブジェクトのプロパティであるグローバル変数の長いリストが表示されます。これを、ユーザーによって追加され、ウィンドウオブジェクトにまだ組み込まれていないものにフィルタリングする方法はありますか?ユーザが追加したすべてのグローバル(ウィンドウ)変数をリストする方法はありますか?
0
A
答えて
2
// setTimeout is needed and is being used here just if the property adding and the checking will be done in sequence. To avoid getting the same reference values on the current time lapse. Check the answer code
// Get current window Properties;
var windowInitProperties = Object.getOwnPropertyNames(window);
setTimeout(() => window.newProperty = 'newProperty', 0)
setTimeout(() => {
// List new Properties;
console.log(
Object.getOwnPropertyNames(window).filter(property => {
return windowInitProperties.indexOf(property) < 0;
})
);
}, 0)
// Get current window Properties;
var windowInitProperties = Object.getOwnPropertyNames(window);
// New property added to window
var newProperty = 'newProperty';
// List new Properties;
console.log(
Object.getOwnPropertyNames(window).filter(property => {
return windowInitProperties.indexOf(property) < 0;
})
);
Object.getOwnPropertyNames
代わりのObject.keys
がenumerable: false
であっても、プロパティを取得するために必要であることに留意し。
0
可能であっても、それは可能だと思います。悪い習慣です。 代わりに、次のようにウィンドウオブジェクトに名前空間を作成できます。
window.myApp = window.myApp || {};
myApp.variable1 = value1; ... myApp.variableN = valueN;
0
この特定のケースでChromeチームが何かを構築しない限り、答えは「いいえ」です。
ウィンドウは単なるオブジェクトです。追加されたプロパティは、誰がそれを追加したかなどの情報やメタデータを保持しません。
ウィンドウに追加するプロパティの接頭辞を付ける必要があります。これにより、ウィンドウを使用する他のライブラリとの衝突を防ぐことができます。そして、接頭辞を使用するプロパティ/値だけを取得するための簡単なfor-inループを作成できます。
1
グローバル変数キャッシュにコア/定義済みの変数名を追加する前に、新しいグローバル変数を追加した後、新しいリストを古いものと比較して、新しいグローバル変数を出力することができます。
var predefined_variables = Object.keys(window);
window.newone = 'test';
window.xyz = 'testXYZ';
var new_variables = Object.keys(window).filter(function(key){
return predefined_variables.indexOf(key)<0;
});
console.log(new_variables);
//["newone", "xyz"]
+0
ニース - そうする必要があります。 – jbyrd
関連する問題
- 1. ウィンドウAPIをグローバルにフックする方法はありますか?
- 2. インスタンスをリストに追加してからウィンドウのリストボックスに追加する方法
- 3. グローバル変数を折りたたむ方法はありますか?
- 4. ウェブページのすべての変更をリストする方法はありますか?
- 5. ユーザ定義のPostgreSQL関数をリストする方法はありますか?
- 6. リスト内のすべてのタプルに最初に文字列を追加する方法はありますか?
- 7. JSの変数に「サブプロパティ」を追加する方法はありますか?
- 8. Pythonで変数を2つ追加して結果変数に代入する方法はありますか?
- 9. CppUTestのグローバル変数を模倣する方法はありますか?
- 10. リレーショナルデータベースのすべてのテーブルのすべてのセルにメタデータを追加する方法はありますか?
- 11. リストボックスからリストにオブジェクトを追加する方法はありますか?
- 12. Javaでグローバル変数を作成する方法はありますか?
- 13. JavaScriptのすべてのウィンドウ[グローバル]変数をループします。 IE互換?
- 14. すべてのナビゲーションバーのタイトルを「戻る」にグローバルに変更する方法はありますか
- 15. Javascriptのすべての関数にtry-catchを追加する方法はありますか?
- 16. ActionScript 3でオブジェクトのすべての変数を宣言順にリストする方法はありますか?
- 17. 変数を追加した後に<script></script>から変数を使用する方法はありますか?スクリプトのindex.htmlのに追加さ
- 18. ディクショナリにリストを追加する方法はありますか? Python
- 19. リストを参照属性としてリストに追加する方法はありますか?
- 20. 変数から日付を減算または追加する方法はありますか?
- 21. グローバル変数を使用する必要がありますか?
- 22. グローバル変数はCの自動変数にありますか?
- 23. JavaScript以外のグローバル変数にアクセスする方法があります
- 24. すべてのElastic Load Balancerをリストする方法はありますか?
- 25. は$(「身体」)に複数のイベントを追加する方法は、リストが変更されたり、ボタンが
- 26. 関数内で生成されたすべての変数を(同時に)グローバル環境に割り当てる方法はありますか?
- 27. メタデータをHLSLグローバル(uniform/constant)変数に付加する方法はありますか?
- 28. URL文字列に$変数を '追加'して '引き算'する方法はありますか?
- 29. 構造体変数にフィールドとして配列(double)を追加する方法はありますか?
- 30. エリキシル剤にはグローバル変数はありません。ある関数から変数を取り出して別の関数で使用する方法は?
私はあなたに同意しません。私は従来のアプリケーションで作業しており、定義した迷子のグローバル変数を見続けているので、作成したばかりの数を確認するためのリストを取得するのは興味がありました。 – jbyrd