1. <dd id="vsvnv"><track id="vsvnv"></track></dd>
      1. <dd id="vsvnv"><center id="vsvnv"></center></dd>
        

        1. <rp id="vsvnv"></rp>

        2. <button id="vsvnv"><acronym id="vsvnv"></acronym></button>
            <dd id="vsvnv"></dd>

            1. ES6中的class类详解

              作者:admin   时间:2022-05-05   访问量:1

                一、class简介

                传统的JS只有对象的概念,没有class类的概念,因为JS是基于原型的面向对象语言,原型对象特点就是将属性全部共享给新对象。

                ES6引入了class类这个概念,通过class关键字可以定义类,这就是更符合我们平时所理解的面向对象的语言。

                     class Person{   //定义一个名为Person的类
                         // 构造函数,用来接受参数
                         constructor(x,y){
                             this.x = x;    //this代表的是实例对象
                             this.y = y;
                         }
                         todoSome(){  //这是个类的方法,不需要加function,有多个方法也不用逗号隔开
                             alert(this.x + "的年龄是" +this.y+"岁");
                         }
                     }
                     export default  Person;

                二、静态方法和静态属性

                静态方法和静态属性,是使用static关键字的属性和方法

                2.1 静态方法

                     static classMethod(){
                       console.log('123456')
                     }

                静态方法不会被子类继承,子类不能调用

                静态方法中的this,指向的是类class,不是类的实例。因此静态方法只能通过类名来调用,不能通过实例来调用

                     let p = new Point();
                     p.classMethod();  // 报错

                2.2 静态属性

                     static prop = 1 ;  // 静态属

                静态属性不能被子类继承,子类不能调用

                静态属性只能通过类名来调用,不能通过类的实例来调

                三、class继承extends

                class可以用过extends关键字来继承

                ES6继承,子类构造函数中必须使用super()。因为ES6继承是先将父类实例对象的属性和方法,加到this上面,然后再调用子类的构造函数修改这个this

                如果子类没有定义constructor方法,super()会默认添加上

                子类会继承父类的方法和属性,但是静态方法和属性必须通过子类的类名来调用

                     import classtest from "./classtest";  //先引入父类
                     class Man extends classtest{
                         constructor(x,y){   //构造函数尽量与父类参数保持一致
                             super();   //利用super()关键字,这个必须放在子类构造函数中的第一位置
                             this.x = x;
                             this.y = y;
                         }
                     }
                     export default  Man;

                四、class的取值函数getter和存值函数setter

                getter、setter就是给class的属性读值、传值用的。

                取值函数getter和存值函数setter可自定义赋值和取值行为,当一个属性只有getter没有setter的时候,这个属性就是只读属性,不能赋值,第一次初始化也不行。

                     let data=[1,2,3,4];  //放在类外面,属于私有变量,可以只读取
                     class Person{
                         // 构造函数
                         constructor(x,y){
                             this.x = x;
                             this.y = y;
                         }
                         get x(){
                             console.log('获得name');
                             return this._name;    //get读取属性
                         }
                         set x(x){
                             console.log("设置name"); 
                             this._name=x;   //set给属性赋值
                         }
                         get data(){
                             return data;   //只读属性,属性返回的值只能是私有变量
                         }
                         todoSome(){
                             alert(this.x + "的年龄是" +this.y+"岁");
                         }
                         static dayin(){
                             alert("dayin");
                         }
                     }
                     export default  Person;

                如何使用:

                     var test= new this.$myutils.classtest('haha','18');
                     test.x="haha3";   //改变了实例化时候的x的值
                     test.todoSome();  //输出:haha3的年龄是18岁。这里就已经不是实例化时候的haha了
                     console.log(test.data);   //结果:打印[1,2,3,4]

                五、注意事项:

                1、在类中定义方法时候,不可以给方法加上function关键字,因为JS中构造函数是用function定义的,两个隔开。

                2、所有方法不要用逗号隔开,否则会报错。


              【地址】:http://www.hotelafzar.com/seo/167.html转载请注明出处


              相关文章

              Copyright ? 2018-2030 大树SEO All Rights Reserved.

              av下页_丰满熟女大屁股水多多_99精品视频免费热播在线观看_久久综合九色综合欧美狠狠