设置JavaScript自定义对象的truthy值
是否存在可以修改的对象属性,以指定该对象的真值。例如,在内部添加一行:设置JavaScript自定义对象的truthy值,javascript,Javascript,是否存在可以修改的对象属性,以指定该对象的真值。例如,在内部添加一行: var myObj{...} 因此,我可以确定是否执行与以下if语句关联的代码块: if(myObj){ //dosomething } Python中类似的东西将覆盖\uuubool\uu方法 JavaScript没有覆盖这样的操作的机制。物体总是真实的,正如菲利克斯·克林所指出的那样。我能想到的与之类似的最接近的方法是toString()方法;但是没有可以重写的toBool()方法 我对Python不是非常熟
var myObj{...}
因此,我可以确定是否执行与以下if语句关联的代码块:
if(myObj){
//dosomething
}
Python中类似的东西将覆盖
\uuubool\uu
方法 JavaScript没有覆盖这样的操作的机制。物体总是真实的,正如菲利克斯·克林所指出的那样。我能想到的与之类似的最接近的方法是toString()
方法;但是没有可以重写的toBool()
方法
我对Python不是非常熟悉,但我非常确定\uuubool\uuuu
基本上是一种覆盖对象如何转换为布尔值的方法。我将它与类似的语言特性进行比较,我也会假设Python如何允许你重写某些类似C++的运算符。
这不是直接相关的,但你也应该考虑阅读这个问题:
再看看我的这段摘录:
由于历史原因,转换为布尔值是不同的:
ECMAScript 1,决定不允许对象配置它
转换。理由如下。布尔运算符| |和
&&保留其操作数的值。因此,相同的对象
可能要被强迫好几次。这被认为是一个错误
性能问题并导致拒收
当您在javascript中说
if(myObj){…}
时。如果myObj
值不是undefined
,null
,0
,false
,零长度字符串
值之一,则该条件为真。因此,除此值之外的任何值都会使javascript中的条件为true
。在javascript中不存在,如果定义映射,则将其作为布尔值是没有意义的
为此,您可以将该对象内的键设置为布尔值
:
let myObj = { isValid: true }
if (myObj.isValid) {
// do something
}
或者为其分配null
,在这种情况下,您可以检查其有效性:
let myObj = null
if (myObj === null) {
// do something
}
此外,更好的做法是对照真实值检查对象,而不是依赖真实值的魔力,因为它可能会导致错误的结果。否,但您可以向对象添加一个即:isTruthy()
方法。如您所见,ToBoolean
始终为对象返回true
。查看此项了解更多信息:我明白了,基本上因为| |返回其中一个表达式而不是返回true或false,所以效率低下?