3
function Father(uname, age) {
this.name = uname
this.age = age
}
Father.prototype.fly = function () {
console.log('I can fly')
}
function Son(uname, age, score) {
Father.call(this, uname, age)
this.score = score
}
Son.prototype = new Father()
Son.prototype.constructor = Son
Son.prototype.exam = function () {
return 'I am better'
}
var son = new Son('aa', 11, 11)
console.log(son)
console.log(son.exam)
- 构造函数的方法,一般需要放在原型对象上,这样可以共享方法,避免内存泄漏, 因为每实例化一个对象,就会开辟一块内存空间.
- 继承属性,主要通过在子构造函数中,调用父构造函数,并且改变父构造函数的指向来实现,以此可以继承父构造函数的属性
- 继承方法,主要通过将父类实例化后,将其赋值给子构造函数的原型对象,即可获得父类中的方法.(对原型对象赋值之后,一定要将constructor属性重新赋值)
- -- 这里不能将 夫构造函数的原型对象直接赋值给子构造函数,那样在子构造函数所具备的方法,会同步到父构造函数上