Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OO Javascript是否有“tobool”或“len”等同物?_Javascript_Oop_Casting_Boolean_Instance - Fatal编程技术网

OO Javascript是否有“tobool”或“len”等同物?

OO Javascript是否有“tobool”或“len”等同物?,javascript,oop,casting,boolean,instance,Javascript,Oop,Casting,Boolean,Instance,OO JS是否有将实例对象强制转换为布尔值的机制?我希望能够在条件中直接使用自定义实例对象,并按照的思路进行断言!!(新的Foo(0))==false,!!(新的Foo(1))==true Python具有\uuuuuuuuuuuuuuuuuuu非零和\uuuuuuuuuuuuuu(请参阅) Ruby有到\u bool JS如何对字符串文本“和零0执行此操作?否,JS不提供强制转换为布尔值的陷阱方法。值的真实性由语言规则决定,不能更改 你应该给你的实例一个被显式调用的方法,比如isValid

OO JS是否有将实例对象强制转换为布尔值的机制?我希望能够在条件中直接使用自定义实例对象,并按照
的思路进行断言!!(新的Foo(0))==false
!!(新的Foo(1))==true

  • Python具有
    \uuuuuuuuuuuuuuuuuuu非零
    \uuuuuuuuuuuuuu
    (请参阅)

  • Ruby有
    到\u bool


JS如何对字符串文本
和零
0
执行此操作?

否,JS不提供强制转换为布尔值的陷阱方法。值的真实性由语言规则决定,不能更改


你应该给你的实例一个被显式调用的方法,比如
isValid()
isTruthy()
isEmpty()
,或者你的对象所代表的任何概念。

!!(新的Foo(1))===true
没关系。当您将一个对象与另一种类型进行比较时,Javascript将对象转换为字符串()。@MarcosPérezGude它具体转换为字符串的是什么?@MarcosPérezGude将
!!(new Foo(1))
始终返回
true
?@MarcosPérezGude:它不使用
==
进行任何转换。使用
==
时,它将取决于其他操作数。如果是如您所示的布尔值,它会将布尔值转换为一个数字,然后对象将执行
toPrimitive
操作,该操作涉及
.toString()
。在您的示例中,您直接转换了对象,因此这是一个简单的
true===true
操作。@MarcosPérezGude:差不多。您需要删除
=
,导致
true==true
。没有
,将调用
.toString()
,因此OP实际上可以提供一个自定义的
.toString()
函数,在这种情况下,该函数可能会给出所需的结果。这似乎有一个内部机制()。可惜它不是一个公开的API@Nathanalen:它被公开为
布尔函数或使用
(双重否定运算符)。