ES6基础语法之class类怎么用
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍了ES6基础语法之class类怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ES6基础语法之class类怎么用文章都会有所收获,下面我们一起来看看吧
千家信息网最后更新 2025年01月18日ES6基础语法之class类怎么用
这篇文章主要介绍了ES6基础语法之class类怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ES6基础语法之class类怎么用文章都会有所收获,下面我们一起来看看吧。
一、class基本语法
JavaScript 语言中,编写一个学生类,代码如下:(prototype可以个对象添加属性和方法)
function Student(stuno,stuname){ this.stuno = stuno; this.stuname = stuname;}Student.prototype.stusex = "";Student.prototype.sayHi = function(){ console.log("大家好,我是"+this.stuname+",我的学号是"+this.stuno+",性别:"+this.stusex);}var stu = new Student("001","孙悟空");stu.stusex = "男";//或// var stu = new Student();// stu.stuno = "001";// stu.stuname = "孙悟空";// stu.stusex = "男";stu.sayHi(); //大家好,我是孙悟空,我的学号是001,性别:男
ES6提供了更接近传统语言的写法,引入了Class这个概念:
constructor为构造函数,当创建对象的时候自动调用:
class Student{ constructor(stuno,stuname) { this.stuno = stuno; this.stuname = stuname; } sayHi() { console.log("大家好,我是"+this.stuname+",我的学号是"+this.stuno); }}var stu = new Student("001","孙悟空");//或// var stu = new Student();// stu.stuno = "001";// stu.stuname = "孙悟空";stu.sayHi(); //大家好,我是孙悟空,我的学号是001
注意:类的声明第一行除了class Student外,还可以如下写法:
let Student = classlet Student = class Student
二、类的属性和方法
实例属性和实例方法:
class Student{ stuno = ""; stuname = ""; sayHi() //此处方法有的地方称为原型方法 { console.log("大家好,我是"+this.stuname+",我的学号是"+this.stuno); }}var stu = new Student();stu.stuno = "001";stu.stuname = "孙悟空";stu.sayHi();
静态属性和静态方法:
class Student{ stuno = ""; stuname = ""; static proName = ""; //专业名称 static proIntroduce() { console.log("专业名称:"+Student.proName); } sayHi() { console.log("大家好,我是"+this.stuname+",我的学号是"+this.stuno); }}Student.proName = "计算机";Student.proIntroduce();
三、实例方法的两种写法
方案一:(又称原型方法)
class Student{ sayHi() { console.log("hi!"); }}let stu = new Student();stu.sayHi();
等同于ES5中:
function Student(){ }Student.prototype.sayHi=function(){ console.log("hi!");}var stu = new Student();stu.sayHi();
方案二:
class Student{ constructor() { this.sayHi = function() { console.log("hi"); } }}let stu = new Student();stu.sayHi();
等同于ES5中:
function Student(){ this.sayHi = function() { console.log("hi"); }}var stu = new Student();stu.sayHi();
当两个方案冲突的时候,constructor里面的函数会覆盖外面的函数:
class Student{ sayHi() //等同Student.prototype.sayHi=function(){...} { console.log("hi!"); } constructor() { this.sayHi = function() //等同在function内部定义 { console.log("hello!"); } }}let stu = new Student();stu.sayHi(); //hello!
等同于ES5中:
function Student(){ this.sayHi = function() { console.log("hello!"); }}Student.prototype.sayHi=function(){ console.log("hi!");}var stu = new Student();stu.sayHi(); //hello!
四、class属性封装
在类的内部可以使用get和set关键字,对某个属性设置存值函数和取值函数,拦截该属性的存取行为。
class Student{ get stuAge(){ return this._stuAge; } set stuAge(age) { if(age >= 18 && age <= 120) this._stuAge = age; else { this._stuAge = 18; console.log("年龄有错误,设置默认值18!"); } }}let stu = new Student();stu.stuAge = 17; //年龄有错误,设置默认值18!console.log(stu.stuAge); //18//------------------------------------------------------------------------------//注意://(1)在get和set后的属性名不能和函数里的取值和设置值的变量名相同(stuAge和_stuAge)//(2)getter不可单独出现//(3)getter与setter必须同级出现(不能一个在父类,一个在子类)
五、继承
通过 extends 实现类的继承。
//通过 extends 实现类的继承。class People //父类{ name = ""; sex = ""; age = 0; sayHi() { console.log(`姓名:${this.name},性别:${this.sex},年龄:${this.age}`); }}class Student extends People //子类继承父类,拥有父类的属性和方法{ }class Teacher extends People //子类继承父类,拥有父类的属性和方法{ salary = 0; //子类在父类基础上扩展一个属性 sayHi() //子类在父类基础上重写父类方法 { console.log(`姓名:${this.name},性别:${this.sex},年龄:${this.age},月薪:${this.salary}`); }}let stu = new Student();stu.name = "孙悟空";stu.sex = "男";stu.age = 500;stu.sayHi(); //姓名:孙悟空,性别:男,年龄:500let tc = new Teacher();tc.name = "唐僧";tc.sex = "男";tc.age = 100;tc.salary = 6000;tc.sayHi(); //姓名:唐僧,性别:男,年龄:100,月薪:6000
六、继承和构造方法
子类通过super()调用父类构造方法:
class People{ constructor(name,sex,age) { this.name = name; this.sex = sex; this.age = age; } sayHi() { console.log(`姓名:${this.name},性别:${this.sex},年龄:${this.age}`); }}class Student extends People{ constructor(name,sex,age) { super(name,sex,age); }}class Teacher extends People{ constructor(name,sex,age,salary) { super(name,sex,age); this.salary = salary; } sayHi() { console.log(`姓名:${this.name},性别:${this.sex},年龄:${this.age},月薪:${this.salary}`); }}let stu = new Student("孙悟空","男",500);stu.sayHi(); //姓名:孙悟空,性别:男,年龄:500let tc = new Teacher("唐僧","男",100,6000);tc.sayHi(); //姓名:唐僧,性别:男,年龄:100,月薪:6000//------------------------------------------------//注意://(1)子类 constructor 方法中必须有 super ,且必须出现在 this 之前。//(2)调用父类构造函数,只能出现在子类的构造函数。// 例如在sayHi()中调用super就会报错;
关于"ES6基础语法之class类怎么用"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"ES6基础语法之class类怎么用"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
方法
属性
孙悟空
年龄
性别
函数
姓名
子类
基础
学号
语法
月薪
唐僧
写法
实例
方案
知识
专业
内容
原型
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发工作面试需要什么
Hive离线数据库
网络技术需要什么证书
江苏5g网络技术
广东警官学院计算机网络安全
怎么查看实体服务器ip
软件开发与项目管理工资待遇
软件开发怎么避免盗版的出现
普陀区无线网络技术服务价格
吉林服务器运维云服务器
自考 软件开发工具试题
计算机远程连接服务器
mfc怎么用到数据库
通信网络技术南邮
985大学法律数据库
网络安全技术等级划分
网络安全比赛分为五类
存储服务器 配置
软件开发必须要申请著作权
云图管家服务器端安装教程
浙江gps网络时钟服务器搭建
linux服务器卡
游戏服务器测速
建立数据库工具
软件开发和软件设计一样不
设计小软件开发
软件开发类最近能考什么证
博彦软件开发
做软件开发用什么电脑配置
计算机网络技术基础书籍推荐