javaScript-js的继承
组合继承
组合继承(组合原型链继承和借用构造函数继承)(常用)
function Person(name){
this.name = name
this.drop = function(){
console.log(this.name + " 跳下去");
}
}
Person.prototype.say = function(){
console.log(this.name + " say something ");
}
function P1(name){
Person.call(this, name) //借用构造函数
}
P1.prototype = new Person() //原型链继承
const p = new P1("wwm")
p.say()
p.drop()
重点:结合了两种模式的优点,传参和复用
特点:1、可以继承父类原型上的属性,可以传参,可复用。
2、每个新实例引入的构造函数属性是私有的。
缺点:调用了两次父类构造函数(耗内存),子类的构造函数会代替原型上的那个父类构造函数。
寄生组合式继承(常用)
寄生:在函数内返回对象然后调用
组合:1、函数的原型等于另一个实例。2、在函数中用apply或者call引入另一个构造函数,可传参
function Person(name){
this.name = name
this.drop = function(){
console.log(this.name + " 跳下去");
}
}
Person.prototype.say = function(){
console.log(this.name + " say something ");
}
function P(){}
P.prototype = Person.prototype
function PP(name){
Person.call(this,name)
}
PP.prototype = new P()
const p = new PP("www")
// console.log(p.name);
p.say()
内容仅供学习参考,若有错误欢迎大家指正----WUCASE