参见英文答案 >
Change Truthy/Falsey value of Javascript Object3个
> Force an object to evaluate to false1个
是否有可能在JavaScript中覆盖对象上的某些内容,使其显得“虚假”?
> Force an object to evaluate to false1个
是否有可能在JavaScript中覆盖对象上的某些内容,使其显得“虚假”?
例如,我创建了一个这样的对象:
function BusyState{ var self = this; self.isSet = false; self.enter = function () { self.isSet = true; }; self.exit = function () { self.isSet = false; }; }; var isLoading = new BusyState(); isLoading.enter();
我可以这样检查忙:
if (isLoading.isSet) { }
但我希望能够将其写成简写:
if (isLoading) { }
根据isSet的值,我可以对我的对象做些什么让它显得真实或虚假吗?
解决方法
据我所知,这是不可能做到的.如果您阅读
ECMAScript-specification,您将看到if(isLoading)被评估为if(ToBoolean(isLoading)=== true)并且
ToBoolean()将始终为对象返回true(如您在规范中的表中所示).