归纳整理ES6中的class类知识点

本篇文章给大家带来了关于javascript的相关知识,e其中主要介绍了关于class类的相关问题,es6引入了class类这个概念,通过class关键字可以定义类,这就是更符合我们平时所理解的面向对象的语言,下面一起来看一下,希望对大家有帮助。

归纳整理ES6中的class类知识点

【相关推荐:javascript视频教程、web前端】

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关键字的属性和方法

静态方法

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

登录后复制静态方法不会被子类继承,子类不能调用静态方法中的this,指向的是类class,不是类的实例。因此静态方法只能通过类名来调用,不能通过实例来调用

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

登录后复制

静态属性

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的时候,这个属性就是只读属性,不能赋值,第一次初始化也不行。

如果变量定义为私有的(定义在类的花括号外面),就可以只使用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、所有方法不要用逗号隔开,否则会报错。

【相关推荐:javascript视频教程、web前端】

以上就是归纳整理ES6中的class类知识点的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2699118.html

(0)
上一篇 2025年3月7日 18:55:39
下一篇 2025年2月26日 02:47:09

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论