Javaスクリプトの関数の引数とその型情報を読み取ることは可能ですか?Javaスクリプト関数の引数のデータ型の情報を読み取る
例えば、私は以下のクラス:
sap.ui.define(['sap/ui/core/theming/Parameters'],
function(P){
'use strict';
var B=C.extend('sap.m.Button', {
metadata:{
properties:{
text:{
type:'string',
group:'Misc',
defaultValue:null
},
type:{
type:'sap.m.ButtonType',
group:'Appearance',
defaultValue:sap.m.ButtonType.Default
}
}
});
..... B.prototype.setType =関数(T){this.setProperty( 'タイプ'、T)。 ....
......lot of code exposes public setter & getter methods for the above properties.......
});
クラスの完全なコードはhereからアクセスすることができます。
クラスによって公開されているパブリックメソッドからメソッド名を読み取ることができます。しかし、これは議論とそのタイプ情報を知ることができません。例えば
:B.prototype.setTypeが露出公共の方法です。 Buttonクラスのオブジェクトを取得することはできますが、実行時にその引数型情報をどのように読み取るかを知ることはできません。
「タイプ」プロパティ(ボタンタイプ)の値をユーザーに追加させたい場合は、入力できる値のタイプを知っておく必要があります。
これをどのように達成できますか?
おかげ
編集1:私の最初のステップで
、私は、フレームワークによって公開されsap.m.ButtonクラスのgetMetadata()メソッドを使用していますが、これは私にpublicMethodNames与えるが、それは与えるものではありません引数型情報に関する情報だから、私は選択肢を探しています。
Javaでは、このようなニーズのためにリフレクションAPIを使用しています。どのように我々はjavascriptで同じことを達成することができますか?
編集2: IDEで達成された結果を示すスクリーンショットです。
与えられたコードは、あなたが望むものを理解するのに十分ではありません。関数の呼び出し内で引数の型を明らかに確認できますが、JSは型付き言語ではないので、関数(メソッド)が実際に呼び出されるまで、パラメータは名前のプレースホルダに過ぎません。 – Dellirium
Dellirium、ご意見ありがとうございます。実際のクラスの参照リンクを追加しました。 – Gana
言語に型情報がないため、型情報を公開するリフレクションAPIはありません。あなたができることは、他の場所でその情報を入手することです。たとえば、ButtonのsetTypeが、あるリストの値を引数に持つことを期待している場合、そのリストがフレームワークコード内で定義されている場所を検出できる場合があります。 – artem