什么javascript对象打印为false,是真实的,并且类型"对象"?

时间:2017-08-16 21:22:29

标签: javascript birt

我正在尝试调试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中访问它?

3 个答案:

答案 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 ) );