なぜあなたはfor/in
を使用していて、なぜあなたはdocument.write
を使用していますか?
最初のものは従来のJavaScriptから来ています。これは、適切なオブジェクトキーの繰り返しがJavaScript言語に焼き付けられてから、より適切なモダンな関数を使用して、反復処理の内容に応じてbad idea(tm)になるからですもはや使用すべきではありません。 2つ目は古代低レベル関数で、absolutely does not do what you think it doesであり、は決してでなければなりません。それは信じられないほど危険であり、それを使用するチュートリアルでは、それを使用するように指示したチュートリアルでは、それ自体が恥ずかしいはずです。
So:現代的なJSの問題を解決してください。旧式のJSでなくてはなりません。オブジェクトのすべてのキーを取得するには、Object.keys(...)
を使用し、オブジェクトの内容を確認したい場合はConsole API(console.log
など)を使用します。
Object.keys(window).forEach(key => {
let type = typeof window[key];
console.log(`${key} (${type})`);
});
完了。
すべてのウィンドウのプロパティと機能は、通常、そのことを知りたいので、タイプごとにリストされています。また、array.forEachに注意してください。JavaScriptには、非常に便利な配列関数がたくさんあります。最後に、このコードではarrow functionが使用されています。これはJS構文の新機能です。あなたはそれを使用する必要はありませんが、可読性を犠牲にすることなく超コンパクトです。また、文字列リテラルではなく、template literalsを使用しています。これは、非常に便利な最新のJS機能です。上記のコードとフォローコードは、この場合には等価です:私たちはワンライナーの矢印の機能を使用するか、または矢印関数本体はthis
を使用している場合
Object.keys(window).forEach(function(key) {
var type = typeof window[key];
console.log(key + " (" + type + ")");
});
(彼らはない等価です - 再び、与えるだけの価値矢印の説明はすばやい読み込み機能)
これは、すべての列挙可能なプロパティをカバーします。非常にありそうもない場合、列挙型の列挙型以外の列挙型およびが必要です。Object.getOwnProperties(...)を使用します。
から撮影された、 '/ためのことに注意してくださいin 'は、保証された信頼できない値の集合を返すレガシーな構文構造です。もし必要ならば、現代のfor/ofを使ってください。実際は 'Object.keys'と' Object.getOwnProperties'を見てください。また、 'document.write'は本当に古くて非常に危険な関数であり、新しいコードでは使用すべきではありません。あなたのページに物事を注入する必要がある場合は、単に '物事を見たい '場合は' console.log'を使い、DOM APIを使う(ノードを作成して要素に追加するか、本文に追加する)。 –