2014-12-14 1 views
2

Как избежать инструкций if, как в приведенном ниже фрагменте, так как может быть проверено несколько ifs, и весь код выглядел бы довольно грязным. Есть ли полиморфный механизм, который можно было бы эффективно принять здесь? Кроме того, пожалуйста, обратитесь к ссылке, чтобы понять полиморфизм в javascript, если он у вас есть.Javascript - Как избежать, если утверждения, подобные приведенному ниже фрагменту?

function car(type) { 
    this.type = type; 
    this.shout = function() { 
    if(this.type == "automatic") 
     alert("automatic type"); 
    else if(this.type == "manual") 
     alert("manual type"); 
    }; 
} 

var audi = new car("manual"); 
audi.shout(); 
+0

Вы также можете реализовать завод для создания разных типов. – dfsq

ответ

1

Определение отображения в ассоциативном массиве:

var carTypes = {}; 
carTypes["automatic"] = "automatic type"; 
carTypes["manual"] = "manual type"; 

Что вы можете Lookup:

this.shout = function() { 
    alert(carTypes[this.type]); 
    }; 

Некоторые проверки будут необходимы для того, чтобы ключи массива ограничены ,

+0

Является ли ваш код постоянным с полиморфным поведением? Просто вопрос. –

+0

Нет, нет ничего ОО полиморфного об этом, его просто эффективный механизм для ответа на ваш вопрос в заголовке 'Как избежать, если инструкции, подобные фрагментам кода ниже?' :) – StuartLC

+0

@StuartLS - Хорошо, есть способ применить полиморфизм для выше фрагмент кода? –

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