ES6前端就业课第三课之class

简介: ES6前端就业课第三课之class

ES6.Class

编程语言,都有关于类的定义和使用,java,C#,C++。使用class的关键字,js之前的版本,没有用。保留字,ES6启用了该关键字。

一.传统方法

通过构造函数定义,并生成对象。

//定义传统的类,js之前的写法
        function Person(name,salary) {
            this.name=name;
            this.salary=salary;
        }
        //定义它的方法
        Person.prototype.toString=function () {
            return this.name+","+this.salary;
        }
  //如何来获取
        let p1=new Person('张晨光',90000);
        console.log(p1.toString());
        //这时候,用的是function来定义一个类。

和传统面向对象语言,写法差别很大,很难受。

接下来,看看ES6是如何写的呢?

二.ES6类的定义:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //使用ES6来定义类,启用了之前的保留字class
        class Person{
            //构造方法
            constructor(name,salary){
                this.name=name;
                this.salary=salary;
            }
            //其他方法
            toString(){
                    return `${this.name},${this.salary}`;
             }
        }
        //使用该类
        let p2=new Person('张晨光老师',100000);
        console.log(p2.toString());
        //这种方式,看起来就是面向对象,ES6更加面向对象;
        console.log(typeof(Person));  //输出的是一个function
        //证明ES6,class对应了之前的function
        let result=(Person===Person.prototype.constructor);
        console.log(result);
        //证明类本身指向了构造方法.
    </script>
</head>
<body>
</body>
</html>

三.静态方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //class Person{}
        const Person=class{
            constructor(name,salary){
                this.name=name;
                this.salary=salary;
            }
            //自定义方法
            showName(){
                return `姓名:${this.name}`;
            }
            showSalary(){
                return `工资:${this.salary}`;
            }
            //静态方法
            static isFee(salary){
                if(salary<5000)
                    return '不用交税';
            }
        }  //类定义的结束
        //调用之
        let p3=new Person('张晨光',4500);
        console.log(p3.showName());
        console.log(p3.showSalary());
        //调用类的静态方法;类名.静态方法
        console.log(Person.isFee(4500));
    </script>
</head>
<body>
</body>
</html>

使用静态方法的时候,语法

static 方法名(参数){}

调用的时候:类名.方法名()

四.继承

基本语法

子类 extends 父类,在之前ES5通过修改原型链模式实现。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //人的定义
        class Person{
            //构造方法的定义
            constructor(name,salary){
                this.name=name;
                this.salary=salary;
            }
            //自定义方法
            showName(){
                return `姓名:${this.name}`;
            }
            showSalary(){
                return `工资:${this.salary}`;
            }
        }
        //定义一个子类
        class YellowPerson extends  Person{
            //子类如果没有定义construtor,则该方法会默认添加上去,即任何子类都有constructor()
            //constructor(...args){ super(...args) }
            //这时候,子类需要针对父类进行加工处理
            constructor(name,salary,skin){
                super(name,salary);//super()使用,在子类构造方法最前面;
                this.skin=skin;  //
            }
            //子类增加一个自己的方法;
            showInfo(){
                //通过super.方法,来调用父类的方法
                return super.showName()+","+super.showSalary()+",肤色:"+this.skin;
            }
        }
        //调用之;
        let yp=new YellowPerson('张晨光',8888,'青铜色');
        //测试实例;
        //console.log(yp instanceof YellowPerson);  //yp是不是子类的实例
        //console.log(yp instanceof Person);  //yp是不是父类的实例
        console.log(yp.showInfo());
    </script>
</head>
<body>
</body>
</html>

总结:

1.ES6类定义的语法,使用class 类名{

//构造方法
//自定义方法
}

2.ES6 静态方法的定义和使用

3.ES6 子类继承父类的语法和使用


目录
相关文章
|
2月前
|
JavaScript 前端开发 Java
VUE学习四:前端模块化,ES6和ES5如何实现模块化
这篇文章介绍了前端模块化的概念,以及如何在ES6和ES5中实现模块化,包括ES6模块化的基本用法、默认导出与混合导出、重命名export和import,以及ES6之前如何通过函数闭包和CommonJS规范实现模块化。
124 0
VUE学习四:前端模块化,ES6和ES5如何实现模块化
|
3月前
|
SpringCloudAlibaba JavaScript 前端开发
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
|
3月前
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
|
4月前
|
JavaScript 前端开发 API
揭秘现代前端开发秘籍:Vue.js与ES6如何联手打造惊艳应用?
【8月更文挑战第30天】本文介绍如何从零开始使用Vue.js与ES6创建现代前端应用。首先,通过简要介绍Vue.js和ES6的新特性,使读者了解这两者为何能有效提升开发效率。接着,指导读者使用Vue CLI初始化项目,并展示如何运用ES6语法编写Vue组件。最后,通过运行项目验证组件功能,为后续开发打下基础。适用于希望快速入门Vue.js与ES6的前端开发者。
81 3
|
6月前
|
前端开发 JavaScript Java
【前端技术】 ES6 介绍及常用语法说明
【前端技术】 ES6 介绍及常用语法说明
55 4
|
7月前
|
前端开发 JavaScript
前端 js 经典:class 类
前端 js 经典:class 类
46 2
|
7月前
|
前端开发 JavaScript
前端 TS 快速入门之三:class 类
前端 TS 快速入门之三:class 类
104 1
|
7月前
|
前端开发 JavaScript
前端 JS 经典:Class 面向对象
前端 JS 经典:Class 面向对象
40 1
|
7月前
|
自然语言处理 前端开发
【Web 前端】es6 中的箭头函数?
【5月更文挑战第1天】【Web 前端】es6 中的箭头函数?
|
7月前
|
存储 前端开发 索引
【Web 前端】ES6中,Set和Map的区别 ?
【5月更文挑战第1天】【Web 前端】ES6中,Set和Map的区别 ?

热门文章

最新文章