es6出来之前js是通过原型、构造函数来实现继承,es6出来之后:class(类)
//面向对象的三要素:封装、继承、多态(继承有:属性继承、方法继承)
原型链上的属性和方法都会被多个实例共享
继承方式1:原型继承(可以继承,无法传参)
伪造对象继承(对象冒充)
例: function Peroson(name,age){
this.name = name // 属性
this.age = age // 属性
this.eat = function(){ // 方法
console.log(this.name + '会吃饭')
}
}
function Web(name,age){
Peroson.call(this,name,age) //call、bind、apply三种方法
}
let w =new Web("张三",18)
伪造对象不好的地方: 可以继承 构造函数内的属性和方法 ;但是 不能继承原型上的属性和方法
方法二:组合继承(上面不变,多加一行)
Web.prototype = new Person() 或 Web.prototype = Person.prototype
将Person的原型链赋给web,共用一个就好了