Javascript-如何避免像下面给出的代码片段这样的if语句?

Javascript-如何避免像下面给出的代码片段这样的if语句?,javascript,polymorphism,Javascript,Polymorphism,如何避免下面代码段中的if语句,因为可能要检查多个ifs,而整个代码看起来会非常混乱。这里是否有一种多态机制可以有效地采用?此外,如果您有javascript中的多态性,请参考一个链接来了解它 function car(type) { this.type = type; this.shout = function() { if(this.type == "automatic") alert("automatic type"); else if(this.typ

如何避免下面代码段中的if语句,因为可能要检查多个ifs,而整个代码看起来会非常混乱。这里是否有一种多态机制可以有效地采用?此外,如果您有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();

定义关联数组中的映射:

var carTypes = {};
carTypes["automatic"] = "automatic type";
carTypes["manual"] = "manual type";
然后您可以查找:

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

需要进行一些验证以确保数组的键受到约束。

您的代码是否遵循多态行为?只是一个问题。不,这没有什么OO多态性,它只是回答标题问题的一种有效机制。
如何避免像下面的代码片段这样的if语句?
:)@StuartLS-好的,有没有一种方法可以对上面的代码片段应用多态性?(继承)多态性要求您将car子类化为
manualCar
automaticCar
,然后相应地重写(或只是替换)shout函数(或者更好地,实现一个
getTransmissionType()
函数,由两个子类实现,由一个公共继承的
shout
调用)。在给定的示例中,这似乎也太过分了?您还可以实现factory来创建不同的类型。