首页 > 编程语言 >Java登陆第三十三天——ES6(二)reset、spread、Class类语法糖

Java登陆第三十三天——ES6(二)reset、spread、Class类语法糖

时间:2024-03-09 17:44:18浏览次数:32  
标签:reset ES6 sell Java log let console name

所谓ECMAScript6也就是JS6。这次更新带来了大量的新特性,使JS代码更简洁,更强大。

复习JS请走:JS入门

JS6文档请走:JS6菜鸟教程

reset

同Java中的可变参数

    public static void tell(String... info){
        System.out.println(info);
    }

在JS中,叫做reset

因为箭头函数中无法使用关键字arguments,所以出现reset

  1. reset支持普通函数和箭头函数

  2. 传参列表中只允许存在一个reset,并且必须在最后

<script>
        console.log("1.reset支持普通函数和箭头函数");
        function f1(a,b,c,...info) {
            console.log(a,b,c);
            console.log("f1;reset="+info);
        }
        f1(1,2,3,4,5);

        let f2=(a,b,...info)=>{
            console.log(a,b);
            console.log("f2;reset="+info);
        }
        f2(1,2,3,4,5);
        /*
        1 2 3
        f1;reset=4,5
        1 2
        f2;reset=3,4,5
        */

        console.log("2.传参列表中只允许存在一个reset,并且必须在最后");
        function f3(...info,...info2) {}//报错 Rest parameter must be last formal
        function f4(...info,a) {}//报错同上
</script>

spread
可变参数的实际应用;spread也可以说是reset应用于实参之上。

  1. spread应用于传参是数组的方法

  2. spread利用解构表达式快速合并数组

  3. spread利用解构表达式快速合并对象

<script>
        console.log("1.JS中的reset同Java中可变参数");
        let strArr = ["A", "B"];
        let f = (...arr) => {
            console.log(arr);
        }
        f(...strArr);//['A', 'B']

        console.log("2.spread利用解构表达式快速合并数组");
        let Arr1=[1,2];
        let Arr2=[3,4];
        let Arr3=[Arr1,Arr2];//注意这是解构表达式的用法 打印结果[Array(2), Array(2)]
        console.log(Arr3);
        let Arr4=[...Arr1,...Arr2];//这是spread应用于解构表达式 打印结果[1, 2, 3, 4]
        console.log(Arr4);

        console.log("3.spread利用解构表达式快速合并对象");
        let p1={name:"张三"};
        let p2={age:18};
        let p3={p1,p2};
        console.log(p3);//注意这是解构表达式的用法 打印结果{p1: {…}, p2: {…}}
        let p4={...p1,...p2};
        console.log(p4);//这是spread应用于解构表达式 打印结果{name: '张三', age: 18}
</script>

Class类语法糖

一种语法糖,让JS对象更符合面向对象编程的写法

(了解即可,这个语法糖真的不好吃。很想让人吐槽)

新增class(类)、extends(继承)、constructor(构造器)、super等关键字

  1. 类中属性的定义

  2. 类中getter、setter方法、普通方法、静态方法

  3. 类的构造器:(只允许有一个构造器)

  4. 类的继承

<script>
        console.log("1.类中属性的定义");
        console.log("2.类中getter、setter方法、普通方法、静态方法");
        class Person {
            name;//成员属性 name
            #age;//私有的成员属性 后续书写必须把#也当作该属性的名字 #age必须一起出现

            get name(){//getter
                return this.name;
            }
            set name(name){//setter
                this.name=name;
            }
            get age(){
                return this.#age;//把#也当作它的属性名
            }
            set age(age){
                this.#age=age;
            }
            say(){//普通方法say
                //模板字符串
                console.log(`"${this.name}今年${this.#age}岁了"`)
            }
            static add(x,y){//静态方法add
                return x+y;
            }

        }
        let p1=new Person();
        p1.name="嘎子";//这里是调用setter方法
        p1.name;//这里是调用getter方法 打印结果 嘎子
        p1.age="8";
        p1.say();//"嘎子今年8岁了"
        console.log(Person.add(1, 2));//静态方法可以用类名访问 打印结果3

        console.log("3.类的构造器");
        class Door{
            #sell;
            get sell(){
                return this.#sell;
            }
            set sell(sell){
                this.#sell=sell;
            }
            constructor() {//无参构造 初始化为999
                this.#sell=999;
            }
            //报错 A class may only have one constructor
            constructor(sell) {//有参构造器 一个类中只允许拥有一个构造器
                this.sell=sell;//错误的写法!!! JS会自动创建一个sell的属性
                this.#sell=sell;
            }
        }
        let d1=new Door();
        console.log(d1.sell);//999

        console.log("4.类的继承");
        class A{
            mom
            constructor() {
                console.log("父类的构造器");
            this.mom="26个字母"
            }
        }
        class B extends A{
            //不显示定义构造器 测试初始化子类时 父类的构造器是否会调用
        }
        let b1=new B();//父类的构造器

</script>

标签:reset,ES6,sell,Java,log,let,console,name
From: https://www.cnblogs.com/rowbed/p/18063006

相关文章

  • java8特性-lambda表达式
    Lambda表达式的使用1.举例:(o1,o2)->Integer.compare(o1,o2);格式:->:lambda操作符或箭头操作符->左边:lambda形参列表(其实就是接口中的抽象方法的形参列表)->右边:labbda体(其实就是重写抽象方法中的方法体)3.lambda表达式的使用:(分为六种情况)方式一:无参,无返回值......
  • JavaEE35个系统源码
    01.基于javaEE_大学生就业信息管理系统设计与实现02.基于javaEE_企业车辆管理系统设计与实现03.基于javaEE_BS架构微博系统设计与实现04.基于javaEE健康管理系统设计与实现05.基于javaEE_医院在线挂号系统设计与实现06.基于javaEE_商品供应管理系统设计与实现07.基于javaEE_......
  • 面试准备不充分,被Java守护线程干懵了,面试官主打一个东西没用但你得会
    写在开头面试官:小伙子请聊一聊Java中的精灵线程?我:什么?精灵线程?啥时候精灵线程?面试官:精灵线程没听过?那守护线程呢?我:守护线程知道,就是为普通线程服务的线程嘛。面试官:没了?守护线程的特点,怎么使用,需要注意啥,Java中经典的守护线程都有啥?我:不知道。。。这的天,面试一个10K的工作,......
  • java List<HashMap<String,Object>> 遍历修改
    List<HashMap<String,Object>>DataSource;inti=0;for(Map<String,Object>item:DataSource){for(Stringk:item.keySet()){if(k.equals("input_date")){//此句为判断条件可去掉Objectb=item.get(k);......
  • java.util.ConcurrentModificationException
    用for循环遍历删除不会报错但是结果未达到预期解决方法......
  • Java多线程
    1.java线程实现/创建的方式(主要是两种)继承Thread类本质是通过实现Runnable接口的一个实例,代表一个线程的实例publicclassMyThreadextendsThread{publicvoidrun(){System.out.println("run()")}}MyThreadthread=newMyThread();thread.st......
  • Java8方法引用简化Lambda
    静态方法引用importlombok.AllArgsConstructor;importlombok.Data;importjava.lang.reflect.Array;importjava.util.Arrays;importjava.util.Comparator;importjava.util.zip.DeflaterOutputStream;/***@authorPickle*@versionV1.0*@date2024/3/823:3......
  • Java学习笔记——第十天
    面向对象高级(一)staticstatic是一个关键字,义为静态,可以修饰成员变量和成员方法。static修饰成员变量成员变量的分类类变量(静态成员变量):有static修饰的成员变量,它们属于类,在计算机里只有一份,会被类的全部对象共享。实例变量(对象成员变量):无static修饰的成员变量,属于每个对象,每......
  • Java入门(Java诞生、特性、版本、开发环境搭建)
    Java入门1.Java帝国的诞生—一场旷日持久的战争(1)1972年C语言诞生:贴近硬件,运行极快,效率极高;应用于:操作系统、编译器、数据库、网路系统等;难点:指针和内存管理;(2)1982年C++诞生:面向对象;兼容C语言;应用于:图像领域、游戏等;(3)Java帝国的诞生:1995年Java诞生:网页简单而粗糙......
  • 01.基于javaEE_大学生就业信息管理系统源码
    基于javaEE_大学生就业信息管理系统:本系统分系统管理员,教师用户,企业用户和毕业生用户4个用户角色。**系统管理员主要功能有系别管理、专业管理、老师管理员管理、站内新闻管理、企业用户管理、岗位管理、文档管理、公告管理、留言管理、就业查询统计(包括就业情况查询,区域分布统......