是否有一个对象的属性可以修改以指定该对象的真值。例如在里面添加一行:
var myObj{...}
Run Code Online (Sandbox Code Playgroud)
这样我就可以确定与以下 if 语句关联的代码块是否被执行:
if(myObj){
//dosomething
}
Run Code Online (Sandbox Code Playgroud)
Python 中类似的东西会覆盖该__bool__方法。
JavaScript 没有机制来覆盖这样的操作。正如Felix Kling 指出的ECMAScript 规范所定义的那样,对象始终是真实的。我能想到的最接近的方法就是方法toString();但没有任何toBool()方法可以重写。
我对 Python 不是很熟悉,但我很确定这__bool__基本上是一种覆盖对象转换为布尔值的方式。我将其与类似的语言功能进行比较,__lt__我还假设 Python 如何允许您以类似于 C++ 的方式覆盖某些运算符。
它没有直接关系,但您还应该考虑阅读这个问题:Overloading Arithmetic Operators in JavaScript? 。
还请考虑2ality 的 Why all object are true in JavaScript 的摘录,重点是我的:
由于历史原因,到布尔值的转换是不同的:对于 ECMAScript 1,决定不允许对象配置该转换。理由如下。布尔运算符|| 和 && 保留其操作数的值。因此,同一个对象可能需要强制多次。这被认为是性能问题并导致拒绝。
| 归档时间: |
|
| 查看次数: |
1229 次 |
| 最近记录: |