使对象变得虚假

时间:2013-08-20 07:28:28

标签: javascript

是否可以在JavaScript中覆盖某个对象上的内容,使其显示为“falsy”?

例如,我创建了一个这样的对象:

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的值,我可以对我的对象做一些让它显得真实或虚假的东西吗?

1 个答案:

答案 0 :(得分:10)

据我所知,这是无法做到的。如果您阅读ECMAScript-specification,则会看到if(isLoading)被评估为if(ToBoolean(isLoading) === true)ToBoolean()将始终返回true对象(如您所见)规范中的表格。