使用此脚本,我在运行时将变量添加到对象:
function MyDocument(someDocument)
{
if(!(someDocument instanceof KnownDocumentClass))
throw "Object must be an instance of KnownDocumentClass: " + someDocument;
this.Document = someDocument;
this.Fields = {};
this.updateValues = function()
{
for (var _it = this.Document.iterator(); _it.hasNext();)
{
var _property = _it.next();
try
{
this[_property.getQualifiedName()] = _property.getContent();
}
catch(err)
{
log("Error :"+err);
}
}
}
this.updateValues();
}
所以,例如,我可以使用
var mydoc = new MyDocument(knownjavadoc);
log(mydoc.Creator) // Shows the original content.
该内容可能有多种类型(有些是int
,有些String
是 s 和许多其他自定义 java 类)。所以它可能会发生log(mydoc.SomeProperty)
返回:
PropertyObjectImpl[id=abc123, data=Some Data, type=Node, order=42]
我知道,我可以添加一个函数来MyDocument
喜欢
this.getValueAsString = function(name)
{
var _prop = this[name];
if(_prop instanceof PropertyObjectImpl)
return "PropertyObject with ID : " + _prop.getID();
else
return _prop;
}
但出于练习目的,我想toValueString()
直接在这些属性上添加此函数,以便调用如下:
var value = mydoc.SomeProperty.toValueString()
代替
var value = mydoc.getValueAsString("SomeProperty");
这可能吗?