ES6基础语法之class类怎么用
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍了ES6基础语法之class类怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ES6基础语法之class类怎么用文章都会有所收获,下面我们一起来看看吧
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
机关单位网络安全保密教育
怎么搞自己的本地服务器
cdn加速服务器
java 监听数据库变化
js抢购软件开发原理
精通数据库语句
传奇世界网页版数据库
高职学计算机网络技术好吗
DB2数据库隔离级别cs
柒保网络技术
王思聪服务器组装过程
印记深圳网络技术有限公司招
青岛学安教育网络技术有限公司
电信dns服务器哪里好用
重庆还将建设乡村人才数据库
炫拓网络技术服务部是啥
惠普ml350服务器安装系统
中国服务器为什么都在美国
关于网络安全的小说500
2017互联网18大科技成果
数据库冲突是什么意思
科东网络安全监控装置配置
服务器防护系统软件
如何找一网站的数据库
广联达软件开发岗位级别
达梦数据库时间转换成秒
华南软件开发中心
服务器设备型号表
我的世界手机版可以进服务器吗
电脑软件开发哪里有