ES6中的class类详解
目录
一、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类详解相关推荐
- JS ES6中export和import详解
1.Export 模块是独立的文件,该文件内部的所有的变量外部都无法获取.如果希望获取某个变量,必须通过export输出, // profile.js export var firstName = ' ...
- 【JavaScript 教程】ES6 中的 Promise对象 详解
[JavaScript 教程]ES6 中的 Promise对象 详解 1.Promise对象含义 promise是异步编程的一种解决方法. 所谓promise,简单说是一个容器,里面保存着某个未来才会 ...
- Java中的Runtime类详解
Java中的Runtime类详解 1.类注释 /**Every Java application has a single instance of class Runtime that allows ...
- java configuration类_JAVA中的Configuration类详解
本文主要研究的是java中的configuration类的用法,涉及maven自动加载,pom.xml配置和简单的java代码,具体如下. properties文件是java平台默认的配置文件格式,其 ...
- stringtokenizer java_基于Java中的StringTokenizer类详解(推荐)
StringTokenizer是字符串分隔解析类型,属于:Java.util包. 1.StringTokenizer的构造函数 StringTokenizer(String str):构造一个用来解析 ...
- mbg中的Example类详解
Mybatis逆向工程中生成的Example类 MyBatis Generator:简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及be ...
- js中的Class类详解
目录 什么是类? 定义一个简单的类 定义一个类为Person,每个Person都会跑,都有名字 看一下Person类 和 Person的实例 但是为什么Person实例多出来的两个属性? new 一个 ...
- Php-SPL库中的迭代器类详解(转)
SPL提供了多个迭代器类,分别提供了迭代访问.过滤数据.缓存结果.控制分页等功能.,因为php总是在不断壮大,我尽可能列出SPL中所有的迭代类.下面其中一些迭代器类是需要php5.4,另外一些如Sea ...
- Java中的Properties类详解Properties配置文件
1.Properties类是什么? Properties(Java.util.Properties),该类主要用于读取Java的配置文件,不同的编程语言有自己所支持的配置文件,配置文件中很多变量是经常 ...
最新文章
- 蓝点lilac / ContextMenuManager:win10右键菜单清理工具
- 简述systemd的新特性及unit常见类型分析、使用systemd管理编译安装的nginx
- python中parse是什么_Python中optparse模块使用浅析
- 假期第一次编程总结(改二)
- java将dxf展示在网页_七天串起java技术栈-第四天
- FG60B SSL ××× V3.0配置
- 带你认识4种设计模式:代理模式、装饰模式、外观模式和享元模式
- Android笔记进程优先级
- php smtp邮件类,php利用smtp类发送邮件
- C 库函数 - pow()
- 如何在iOS和WatchKit中更改图像tintColor
- laydate 在vue中使用_如何在vue-cli项目里用layer的layData日期组件(代码)
- Multisim14.0软件安装+破解
- 生成对抗网络(GAN)教程 - 多图详解
- 软件开发工程师证书有用吗_关于软件工程师职业证书你知道多少?
- 使用HTML编写浣溪沙,浣溪沙_巅峰Hacker_新浪博客
- 计算机桌面有个方框,电脑桌面总出现蓝色框怎么办
- Anaconda详细安装及使用教程
- 花指令 用c语言,最新一批花指令
- buck电路上下管_什么是 BUCK 电路_BUCK 电路工作原理_BUCK 电路图-与非网