2012-05-31 2 views
0

хорошо, это не простой вопрос, но в fiddle вы увидите упрощенную версию того, что это я пытаюсь сделать:я хочу вернуться ложным при создании экземпляра объекта

Я хочу, чтобы создать экземпляр объект, делать все операции, мне нужно, чтобы инициализировать его, но я хочу заявление:

var obj = new class; 

вернуть «ложь» в OBJ приведены некоторые условия.

вот код так или иначе:

var cl = function(id){ 
    this.init(id); 
    if(this.id > 5){ 
     return false; 
    } 
}; 


cl.prototype = { 
    init: function(id){ 
     this.id = id;       

    } 
} 

var arr = []; 

for(i = 0; i < 10; i++){ 
    var obj = new cl(i); 
    if(obj){ 
     arr.push(obj); 
    } 
} 

console.log(arr); 

Я знаю, что конечный результат может быть достигнут путем создания свойства элемента управления к объекту, но я интересно, если есть какой-либо рисунок, чтобы сделать это чище.

+1

Вы не можете вернуть ничего, кроме объекта, созданного при использовании 'new'. поэтому я бы сделал «throw new Error (« Invalid id »)» и прервал операцию. – arahaya

+1

вы также можете вернуть другой объект (null - это значение, хотя typeof null - это объект), все оставшиеся возвращенные игнорируются. – jasssonpet

ответ

1

Возможно, не совсем то, что вы просили, но решение может заключаться в использовании заводского шаблона. Конечно, вам нужно будет вызвать метод factory вместо конструктора. checkout this fidlle

+0

btw; это не та фабричная модель, которая предназначена для ... но она действительно работает и создает для вас либо объект, либо логическое значение. И если это сработает, то, черт возьми;) – giorgio

+0

спасибо, это тоже не то, что я искал, но cudos для представления мне действительной альтернативы –

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