继承性: 先创建一个父类 然后子类继承父类的方法和属性 可以解决重复代码的问题
比如:动物类:猫狗老虎都是动物 可以把动物的共有属性放在动物类中
对应的动物继承对应动物类的方法和属性
一、原型链继承 将原型改成对应的对象
// 动物类 构造函数
function Animal(name, age, color) {
console.log(this) //window
this.name = name
this.age = age
this.color = color
}
Animal.prototype.move = function() {
console.log(this.name + "正在走路")
}
Animal.prototype.eat = function() {
console.log(this.name + "正在吃")
}
// 狗 构造函数 想让狗继承动物类的所有属性和方法
// *************** 原型链继承 将原型改成对应的对象
function Dog(name, age, color) {
}
Dog.prototype = new Animal("小黑", 2, "黄色")
Dog.prototype.watch = function() {
console.log("旺旺旺")
}
var d1 = new Dog("旺财", 1, "黑色")
console.log(d1.name) // 小黑
二、冒充继承 通过call 和 apply改变this 只能继承构造函数中的属性 不能继承原型里的
// 老虎 构造函数
// *************** 冒充继承 通过call 和 apply改变this
// 只能继承构造函数中的属性 不能继承 原型里的
function Tiger(name, age, color) {
this.height = 180
Animal.call(this, name, age, color)
}
Tiger.prototype.chiren = function() {
console.log(this.name + "正在吃人")
}
var t1 = new Tiger("老虎", 2, "花纹")
console.log(t1.name) // 老虎
三、组合继承:冒充继承+ 原型继承 将所有的属性和方法都继承了
function Cat(name, age, color) {
Animal.call(this, name, age, color)
}
Cat.prototype = new Animal()
Cat.prototype.maimeng = function() {
console.log(this.name + "正在卖萌")
}
var c1 = new Cat("小猫", 2, "花纹")
console.log(c1)
c1.move() //小猫正在走路