是否可以在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的值,我可以对我的对象做一些让它显得真实或虚假的东西吗?
答案 0 :(得分:10)
据我所知,这是无法做到的。如果您阅读ECMAScript-specification,则会看到if(isLoading)
被评估为if(ToBoolean(isLoading) === true)
而ToBoolean()将始终返回true
对象(如您所见)规范中的表格。