2013-08-20 2 views
7

Возможно ли переопределить что-то на объекте в JavaScript, чтобы он выглядел «ложным»?Сделать объект falsy

Для exampe, я создаю объект так:

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

«Нет» ........... – Matt

+1

хорошо, «возможно». Но это ужасная идея ... – Alnitak

+0

Alnitak: Как бы вы «могли» обойти это? – Matt

ответ

10

Насколько я знаю, это невозможно. Если вы прочитаете ECMAScript-specification, вы увидите, что if(isLoading) оценивается как if(ToBoolean(isLoading) === true), а ToBoolean() всегда будет возвращать true для объекта (как вы можете видеть в таблице в спецификации).

Смежные вопросы