是否可以读取 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=function(t){this.setProperty('type',t);....
......lot of code exposes public setter & getter methods for the above properties.......
} );
可以从 here 访问该类的完整代码.
我能够从类公开的公共(public)方法中读取方法名称。但这不允许我知道参数及其类型信息。
例如:B.prototype.setType 是公开的公共(public)方法。我可以获取 Button 类的对象,但不知道如何在运行时读取其参数类型信息。
如果我想让用户为“类型”属性(它是按钮类型)添加值,我应该知道他可以输入的值的类型。
我怎样才能做到这一点?
谢谢
编辑 1:
第一步,我使用 getMetadata()框架公开的 sap.m.Button 类的方法,这给了我 publicMethodNames 但它没有给我关于参数类型信息的信息。所以,我正在寻找替代方案。
在java中,针对这种需求,我们有反射API。我们如何在 javascript 中实现相同的目标?
编辑 2: 显示在 IDE 中取得的结果的屏幕截图。
最佳答案
您可以使用arguments
对象访问函数参数:
var f = function () {
for (var i = 0; i < arguments.length; i++) {
console.log(arguments[i], typeof arguments[i]);
}
}
f(123, 'test', { a: 1}, function () { alert('x') });
UPD 如何获取声明的参数编号:
var f = function (a, b) {
console.log(arguments);
};
console.log(f.length); //2
f(1, 1, 1, 1); //object with 4 keys
f(1); //object with 1 key
关于javascript - 读取 Javascript 函数参数数据类型信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39078266/