class Duck {
quack() {
console.log("Quack!");
}
}
class Person {
quack() {
console.log("I can quack like a duck!");
}
}
function makeQuack(duckLike) {
duckLike.quack();
}
makeQuack(new Duck()); // Quack!
makeQuack(new Person()); // I can quack like a duck!
makeQuack函数不关心参数的具体类型,只要它有quack方法即可。 这种多态性完全基于对象的行为,而不是类型。
function greet(greetingFunction) {
greetingFunction();
}
function englishGreet() {
console.log("Hello!");
}
function spanishGreet() {
console.log("Hola!");
}
greet(englishGreet); // Hello!
greet(spanishGreet); // Hola!
greet函数接受一个函数作为参数,根据传入的函数不同,行为也不同。