[解決済み】オブジェクトのすべてのメソッドを表示するには?
質問
例えば、あるオブジェクトに対して利用可能なすべてのメソッドをリストアップする方法を知りたいのです。
alert(show_all_methods(Math));
これが印刷されるはずです。
abs, acos, asin, atan, atan2, ceil, cos, exp, floor, log, max, min, pow, random,round, sin, sqrt, tan, …
解決方法は?
を使用することができます。
Object.getOwnPropertyNames()
を使用すると、列挙可能かどうかにかかわらず、オブジェクトに属するすべてのプロパティを取得することができます。 例えば
console.log(Object.getOwnPropertyNames(Math));
//-> ["E", "LN10", "LN2", "LOG2E", "LOG10E", "PI", ...etc ]
次に
filter()
を使えば、メソッドだけを取得することができます。
console.log(Object.getOwnPropertyNames(Math).filter(function (p) {
return typeof Math[p] === 'function';
}));
//-> ["random", "abs", "acos", "asin", "atan", "ceil", "cos", "exp", ...etc ]
ES3 ブラウザ(IE 8以下)では、組み込みオブジェクトのプロパティは列挙できません。 のようなオブジェクトは
window
と
document
は組み込みではなく、ブラウザによって定義され、ほとんどの場合、設計上、列挙可能です。
から ECMA-262 第3版 :
グローバルオブジェクト
には、一意のグローバル オブジェクト(15.1)が作成される前に作成されます。 制御がどの実行コンテキストにも入る。 初期状態では、グローバルオブジェクトは のプロパティは以下の通りです。- 内蔵の Math、String、Date.Data.Data.Data.Data.Data.Data などのオブジェクトがあります。 parseInt など。 これらには属性 { DontEnum } です。 .
- ホスト定義の追加 プロパティを指定します。これには プロパティで、その値はグローバル オブジェクトそのものです。 HTMLドキュメントオブジェクトモデルでは、ウィンドウ プロパティは、グローバルオブジェクトの グローバルオブジェクトそのものです。制御 が実行コンテキストに入るとき、そして ECMAScriptのコードが実行される。 にプロパティが追加されることがあります。 グローバルオブジェクトと初期 のプロパティが変更されることがある。
これは、それらのオブジェクトがGlobalオブジェクトの列挙可能なプロパティではないことを意味していることを指摘しておく必要があります。 仕様書の残りの部分に目を通すと、これらのオブジェクトの組み込みプロパティやメソッドのほとんどに
{ DontEnum }
属性が設定されています。
更新情報:SO仲間のCMSさんが
に関するIEのバグ
{ DontEnum }
をご覧ください。
Microsoft] JScript は、DontEnum 属性をチェックする代わりに、オブジェクトのプロトタイプチェーンにある同名のプロパティが DontEnum 属性を持っている場合、そのオブジェクトのすべてのプロパティをスキップするようになりました。
要するに、オブジェクトのプロパティに名前を付けるときは注意しましょう。 もし同じ名前の組み込みのプロトタイププロパティやメソッドがあれば、IE は
for...in
ループを使用します。
関連
-
[解決済み】ETIMEDOUTエラーの対処方法は?
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトにキーが存在するかどうかをチェックする?
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】未定義のオブジェクトプロパティを検出する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】document.getElementByIDは関数ではありません。
-
[解決済み】Angular JS Uncaught Error。[インジェクター:モジュラー]。
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み] [Solved] Uncaught TypeError: nullのプロパティ 'appendChild' を読み取ることができない。
-
[解決済み】WebpackとBabelで「このファイルタイプを扱うには適切なローダーが必要な場合があります。
-
[解決済み】JavaScript ランタイムエラー:'$'が未定義です。
-
[解決済み】npm install --legacy-peer-deps は具体的に何をするのですか?どんなときに推奨されるのか/どんな使用例が考えられるのか?
-
[解決済み】Redux TypeError: 未定義のプロパティ 'apply' を読み取れない
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools
-
[解決済み] [Solved] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングする