ES6 面向对象
//面向对象封装
class Student{ //定义类 (尊从首字母大写的约定)
constructor(props){ // 构造函数 (构造函数内定于属性)
this.name = props.name || '匿名'; // 默认'匿名'
this.grade = props.grade || 1;
}
hello(){ // 在构造函数的原型上定义方法
console.log(`你好,${this.name}同学,你在${this.grade}年级`);
}
}
//使用
function createStudent(props) { // 对于 new 构造函数的封装,其优点:一是不需要 new 来调用,二是参数灵活
return new Student(props || {}) // 通过 new 创建构造函数,并传入参数/属性
}
let niming = createStudent();
niming.hello();
let xiaoming = createStudent({
name:'小明',
grade:2
});
xiaoming.hello();
//继承
class PrimaryStudent extends Student { //class 子类 extends 父类
constructor(props) {
super(props); // 用 super 调用父类的构造方法实现属性继承
this.age = props.age || 8; //新增子类属性
}
getAge() { //对子类添加方法
console.log(`${this.name}同学,你今年${this.age}岁`);
}
}
//使用继承后的
function createPrimaryStudent(props) { // 对于 new 构造函数的封装,其优点:一是不需要再 new 来调用,二是参数灵活
return new PrimaryStudent(props || {}) // 通过 new 创建构造函数,并传入参数/属性
}
let xiaohong = createPrimaryStudent({
name:'小红',
grade:3,
age:10
});
xiaohong.hello();
xiaohong.getAge();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论