Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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
设置JavaScript自定义对象的truthy值_Javascript - Fatal编程技术网

设置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,所以效率低下?