当创建两个构造函数Woman和Man,发现其中有大量的属性是一样的,如eyes:2,head:1.
解决方法:创建一个构造函数Person其中记录二者相同的属性,使两个构造函数的原型对象prototype分别指向各自创建的对象new Person()。(即子类原型对象=父类对象)
当要实现各自特有的方法时(如女生能生小孩),可以给对应构造函数中带有的原型对象prototype添加方法解决。
// 构造函数 new 出来的对象 结构一样,但是对象不一样
function Person() {
this.eyes = 2
this.head = 1
}
// console.log(new Person)
// 女人 构造函数 继承 想要 继承 Person
function Woman() {
}
// Woman 通过原型来继承 Person
// 父构造函数(父类) 子构造函数(子类)
// 子类的原型 = new 父类
Woman.prototype = new Person() // {eyes: 2, head: 1}
// 指回原来的构造函数(原来被覆盖了,constructor重新指向Woman)
Woman.prototype.constructor = Woman
// 给女人添加一个方法 生孩子(不同的对象Person里都有prototype属性)
Woman.prototype.baby = function () {
console.log('宝贝')
}
const red = new Woman()
console.log(red)