目录

一、class简介

二、静态方法和静态属性

2.1 静态方法

2.2 静态属性

三、class继承extends

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

五、Super关键字

六、注意事项:



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

如果变量定义为私有的(定义在类的花括号外面),就可以只使用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]

五、Super关键字

六、注意事项:

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

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

ES6中的class类详解相关推荐

  1. JS ES6中export和import详解

    1.Export 模块是独立的文件,该文件内部的所有的变量外部都无法获取.如果希望获取某个变量,必须通过export输出, // profile.js export var firstName = ' ...

  2. 【JavaScript 教程】ES6 中的 Promise对象 详解

    [JavaScript 教程]ES6 中的 Promise对象 详解 1.Promise对象含义 promise是异步编程的一种解决方法. 所谓promise,简单说是一个容器,里面保存着某个未来才会 ...

  3. Java中的Runtime类详解

    Java中的Runtime类详解 1.类注释 /**Every Java application has a single instance of class Runtime that allows ...

  4. java configuration类_JAVA中的Configuration类详解

    本文主要研究的是java中的configuration类的用法,涉及maven自动加载,pom.xml配置和简单的java代码,具体如下. properties文件是java平台默认的配置文件格式,其 ...

  5. stringtokenizer java_基于Java中的StringTokenizer类详解(推荐)

    StringTokenizer是字符串分隔解析类型,属于:Java.util包. 1.StringTokenizer的构造函数 StringTokenizer(String str):构造一个用来解析 ...

  6. mbg中的Example类详解

    Mybatis逆向工程中生成的Example类 MyBatis Generator:简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及be ...

  7. js中的Class类详解

    目录 什么是类? 定义一个简单的类 定义一个类为Person,每个Person都会跑,都有名字 看一下Person类 和 Person的实例 但是为什么Person实例多出来的两个属性? new 一个 ...

  8. Php-SPL库中的迭代器类详解(转)

    SPL提供了多个迭代器类,分别提供了迭代访问.过滤数据.缓存结果.控制分页等功能.,因为php总是在不断壮大,我尽可能列出SPL中所有的迭代类.下面其中一些迭代器类是需要php5.4,另外一些如Sea ...

  9. Java中的Properties类详解Properties配置文件

    1.Properties类是什么? Properties(Java.util.Properties),该类主要用于读取Java的配置文件,不同的编程语言有自己所支持的配置文件,配置文件中很多变量是经常 ...

最新文章

  1. 蓝点lilac / ContextMenuManager:win10右键菜单清理工具
  2. 简述systemd的新特性及unit常见类型分析、使用systemd管理编译安装的nginx
  3. python中parse是什么_Python中optparse模块使用浅析
  4. 假期第一次编程总结(改二)
  5. java将dxf展示在网页_七天串起java技术栈-第四天
  6. FG60B SSL ××× V3.0配置
  7. 带你认识4种设计模式:代理模式、装饰模式、外观模式和享元模式
  8. Android笔记进程优先级
  9. php smtp邮件类,php利用smtp类发送邮件
  10. C 库函数 - pow()
  11. 如何在iOS和WatchKit中更改图像tintColor
  12. laydate 在vue中使用_如何在vue-cli项目里用layer的layData日期组件(代码)
  13. Multisim14.0软件安装+破解
  14. 生成对抗网络(GAN)教程 - 多图详解
  15. 软件开发工程师证书有用吗_关于软件工程师职业证书你知道多少?
  16. 使用HTML编写浣溪沙,浣溪沙_巅峰Hacker_新浪博客
  17. 计算机桌面有个方框,电脑桌面总出现蓝色框怎么办
  18. Anaconda详细安装及使用教程
  19. 花指令 用c语言,最新一批花指令
  20. buck电路上下管_什么是 BUCK 电路_BUCK 电路工作原理_BUCK 电路图-与非网

热门文章

  1. 做亚马逊有必要注册品牌吗?
  2. 5G NR—— RRC状态
  3. Hadoop 图处理
  4. matlab标题显示在下方
  5. mysql int类型需要指定长度_mysql中整数类型后面的数字,是不是指定这个字段的长度?比如int(11),11代表11个字节吗?...
  6. 各种字符集和编码详解
  7. Linux rzsz命令
  8. 我好久没有以小步紧跑去迎接一个人的那种快乐了
  9. 悬镜安全丨第三期全球一周安全情报(8.6-8.12)
  10. Android 客户端与服务器端交互实现登录功能