多态, 最初的理解就是: 相同的函数, 不同的实现。官方一点就是把“做什么”和“谁来做”分开。
es6一个简单的多态
class Animal{
constructor(){
this.name = name;
}
getName() {
return this.name;
}
}
class Dog extends Animal {
constructor(name) {
super(name);
}
speak(){
return 'speak'
}
}
通过es5实现
function Animal(name){
this.name = name;
}
Animal.prototype.getName = function(){
return this.name;
}
从js 的语言特性上可以看出,要得到一个对象, 不是通过实例化, 而是找到一个对象作为原型并克隆它, 而我们并不需要知道克隆的细节。 在以上的代码中, animal 并不是类, 而是作为构造器被调用, new 是使用构造器来创建对象的过程, 实际上就是先clone Object.prototype, 再进行一些额外其它操作的过程。