JavaScript 多态
多态是面向对象范式的核心概念之一,它提供了以不同形式执行单一操作的方式。它可以让我们在不同的JavaScript对象上调用相同的方法。由于JavaScript不是一种类型安全的语言,我们可以在方法中传递任意类型的数据成员。
示例1
让我们看一个示例,其中子类对象调用了父类的方法。
<script>
class A
{
display()
{
document.writeln("A is invoked");
}
}
class B extends A
{
}
var b=new B();
b.display();
</script>
输出:
A is invoked
示例2
让我们看一个示例,其中一个子类和一个父类包含相同的方法。在这里,子类的对象调用了两个类的方法。
<script>
class A
{
display()
{
document.writeln("A is invoked<br>");
}
}
class B extends A
{
display()
{
document.writeln("B is invoked");
}
}
var a=[new A(), new B()]
a.forEach(function(msg)
{
msg.display();
});
</script>
输出:
A is invoked
B is invoked
示例3
让我们用基于原型的方法来看同样的示例。
<script>
function A()
{
}
A.prototype.display=function()
{
return "A is invoked";
}
function B()
{
}
B.prototype=Object.create(A.prototype);
var a=[new A(), new B()]
a.forEach(function(msg)
{
document.writeln(msg.display()+"<br>");
});
<script>
输出:
A is invoked
B is invoked