// 构造函数
// 本质还是一个函数
// 是一个专门生成对象的函数
// 生成的这个对象,有属性属性值,还有函数方法
// ES5的构造函数语法
function CreateObj1(name,age){
this.name = name;
this.age = age;
}
createObj1.prototype.fun = function(){
console.log('我是ES5语法创建的实例化对象')
}
// ES6的构造函数语法
class CreateObj2{
constructor(name,age){
this.name = name;
this.age = age;
}
fun(){
console.log('我是ES6语法创建的实例化对象')
}
}
// 所谓的继承
// 创建新的构造函数时,有一些属性或者方法,与之前的构造函数相同
// 为了节约代码,可以从之前的构造函数中,继承属性和方法
// 对不同的属性和方法,再重新定义
// 为了生成构造函数时,节约代码
// ES6 构造函数的继承语法
// 1, ES5 或者 ES6 先声明一个构造函数
// 父类构造函数
function CreateObj1(name,age){
this.name = name;
this.age = age;
}
CreateObj1.prototype.fun = function(){
console.log('我是ES5语法创建的实例化对象')
}
// 继承父类构造函数的属性和方法
// 在继承父类属性的同时,也会继承父类所有的方法
class Son extends CreateObj1{
constructor(name,age,sex){
super(name);
this.age = age;
this.sex = sex;
}
fun2(){
console.log('我是自己的fun')
}
}
const obj1 = new Son( '张三' , 18 ,'男');
console.log(obj1);
// 总结:
// 1,继承语法
// class 子类构造函数名称 extends 父类构造函数名称{}
// 2,constructor 构造器中,定义参数
// 参数可以是从父级继承来的,也可以是子类自己定义的
// 从父类继承的属性必须用 super(属性) 来定义
// 可以继承父类所有的属性或者一部分属性
// 3,也可以定义子类的属性和子类的方法
// 4,父类的所有方法都会继承