我正在尝试调试BIRT报告,我从reportContext中检索了一个参数,如下所示:$ git rebase
BIRT没有调试器,BIRT javascript无法访问JSON.stringify,所以我不能除了打印它之外,检查这个变量是什么。当我打印它时,它打印为" false"。 git pull --rebase
是"对象",var myParameter = reportContext.getParameterValue("myParameter");
评估为false,typeof(myParameter)
评估为false,myParameter === null
评估为false,myParameter是真实的(如果我使用它作为if语句的守护,if语句被执行)。这个变量究竟是什么,我怎样才能确定它是什么?有没有办法在不使用JSON.stringify的情况下对其进行字符串化,而我无法在BIRT中访问它?
答案 0 :(得分:6)
> new Boolean(false).toString()
'false'
> typeof new Boolean(false)
'object'
> !!new Boolean(false)
true
>
要检查这是否实际上是您的对象,new Boolean(false).constructor
会返回(字符串化)[Function: Boolean]
。
答案 1 :(得分:2)
SLaks给出的答案非常接近,并让我弄清楚它到底是什么:BIRT javascript可以调用Java代码并使用Java对象和类 - myParameter是BIRT的Java布尔对象的Javascript版本(不是Java布尔基元,或Javascript布尔对象,或Javascript布尔基元)。
答案 2 :(得分:0)
考虑一些带有自定义toString()
函数的自定义对象,后者返回false。
function MyType() {}
MyType.prototype.toString = function() { return "false"; };
var a = new MyType();
console.log( String( a ) );
console.log( typeof a );
console.log( Boolean( a ) );