基于原型的继承
将特有属性写在构造函数里,将共有属性写在构造函数的prototype原型中。利用原型链实现对原型属性和方法的继承。
function Animal(color){
this.color = color
}
Animal.prototype.move = function(){} // 动物可以动
function Dog(color, name){
Animal.call(this, color) // 或者 Animal.apply(this, arguments)
this.name = name
}
// 下面三行实现 Dog.prototype.__proto__ = Animal.prototype
function temp(){
temp.prototype = Animal.prototype
Dog.prototype = new temp()}
Dog.prototype.constuctor = Dog
Dog.prototype.say = function(){ console.log('汪')}
var dog = new Dog('黄色','阿黄')
基于class的继承
es6引入class关键词。class声明创建一个基于原型继承的具有给定名称的新类
class Animal{
constructor(color){
this.color = color
}
move(){}
}
class Dog extends Animal{
constructor(color, name){
super(color)
this.name = name
}
say(){}
}