JavaScript中class类的介绍
class的概念
一、我们为什么要用到class类?
因为通过class类来创建对象,使得开发者不必写重复的代码,以达到代码复用的目的。它基于的逻辑是,两个或多个对象的结构功能类似,可以抽象出一个模板,
依照模板复制出多个相似的对象。就像汽车制造商一遍一遍地复用相同的模板来制造大量的汽车车,我们暂且把class理解为一个模板。
但是为什么我们不用function函数用来重复使用呢?
因为funcion声明是需要状态提升的,而class不是,class需要先声明再使用。
二、class类的语法
class Student{
constructor(name,age,sex){
this.name = name
this.age= age
this.sex = sex
}
read(){console.log(this.name+this.age+this.sex)}
}
var Tom =new Student('tom',21,'男')
Tom.read()
Tom是通过类Student实例化出来的对象。对象Tom是按照Student这个模板,实例化出来的对象。实例化出来的对象拥有预先定制好的结构和功能。
2.1 constructor 构造方法
constructor方法是一个特殊的方法,用来创建并初始化一个对象。在一个class中只能有一个命名为constructor的特殊方法,如果包含多个将会报错。
constructor中可以通过super关键字,调用父类的constructor方法。
2.2 static (静态方法)
通过static关键字为一个class创建静态方法
class student{
//静态属性
static p = 2;
//构造方法
constructor(name,age,sex){
this.name=name
this.age=age
this.sex=sex
}
//实例方法 dream(){console.log('月薪过万。')}
}
// 静态属性调用
console.log(student.p)
2.3 类的继承 extends
class A {
constructor(){
this.name = 'Marry'
this.age= 18
}
read(){console.log(this.name+this.age)}
}
class B extends A {
constructor(props) {
super(props)
}
s(){
console.log(this.name+this.age)
}
}
var b = new B();
b.s()
当实例 b 调用 s 方法时,b 本身没有 name和age,会根据继承找到A
2.4“this”指向问题
class中的this指向实例时的对象。
2.5 super( )关键字
关键字super用于调用父类相应的方法,这是相较于原型继承的一个好处
三.总体的写法
// 创建一个类存放特有的属性和方法,用来实例对象。
class Student{
// 静态属性只属于Student的属性
static s = "180";
// 静态方法只属于Student的方法
static m(){
console.log("静态方法")
}
// 构造方法
constructor(props){
//实例属性
this.name=props.name;
this.age=props.age;
this.sex=props.sex;
}
// 实例方法
students(){
console.log(this.name+this.age+this.sex) }
}
// 静态属性调用
console.log(Student.s)
// 实例化对象
var S1 = new Student('tom',21,'男');
// 调用方法
S1.students()
以上纯属个人理解,如有疑问欢迎留言
JavaScript中class类的介绍的更多相关文章
- JavaScript中创建类,赋值给ajax中的data参数
缘由:因为要给根据是否选中checkbox来动态增加ajax中data的属性(ajax的data属性格式的几种方法,参考http://www.jb51.net/article/46676.htm) d ...
- JavaScript中的类
JavaScript类的相关知识 1.例子 /* 例1 */// 定义一个构造函数function Range(from, to){ this.from = from; this.to = ...
- Javascript中的类实现
Javascript本身并不支持面向对象,它没有访问控制符,它没有定义类的关键字class,它没有支持继承的extend或冒号,它也没有用来支持虚函数的virtual,不过,Javascript是一门 ...
- JavaScript中定义类的方式详解
本文实例讲述了JavaScript中定义类的方式.分享给大家供大家参考,具体如下: Javascript本身并不支持面向对象,它没有访问控制符,它没有定义类的关键字class,它没有支持继承的exte ...
- JavaScript中的类继承
JavaScript是一个无class的面向对象语言,它使用原型继承而非类继承.这会让那些使用传统面向对象语言如C++和Java的程序员们感到困惑.正如我们所看到的,JavaScript的原型继承比类 ...
- 一、javascript中的类
1.找出对象的构造器----constructor/instanceof constructor是用模版实例化对象的时候附带的一个额外属性,这个属性指向创建该对象时所使用的javascript构造函数 ...
- javascript中的splice方法介绍&示例
javascript 中的 splice 方法很强大,它可以用于插入.删除或替换数组的元素. 下面来一一介绍! 删除:用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数 ...
- JavaScript中的类数组对象
在javascript中,对象与数组都是这门语言的原生规范中的基本数据类型,处于并列的位置. 一般来说,如果我们有一个对象obj和一个数组a: obj["attr1"]; / ...
- 深入理解JavaScript中的类继承
由于写本文时全部是在编辑器中边写代码边写感想的,所以,全部思想都写在代码注释里面了 // 类继承 //todo.1 extends 关键字 class Animal { constructor(nam ...
随机推荐
- Java之路---Day03
2019-10-17-21:18:33 方法 定义格式: public static void 方法名称() { 方法体 } 完整格式: 修饰符 返回值类型 方法名称(参数类型 参数名称,... ...
- javascript ~~ 符号是什么意思呢?
~ bitwise NOT 运算符 ~对操作数按位取反,两个的意思即作两次取反操作,其实是等作原数本身(操作数是32整数范围内) ~~(Math.random()*7) 即 var n = Math. ...
- TortoiseSVN安装和使用
安装说明 使用说明 检出项目 导入项目 提交 更新 查看日志 版本回滚 版本控制 总结 安装说明 开发人员强烈建议使用IDE中的SVN插件更加智能与人性化. 首先安装SVN客户端,windows一般选 ...
- Android为TV端助力之:maxWidth设置无效
android:maxWidth用过几次,之前有效,今天再用就无效了.其实是有两个注意点的,记录下: 1. android:adjustViewBounds="true" 2.an ...
- 个人项目—WC
一,Github地址:https://github.com/mushan520/WC.git 二.PSP表格: PSP2.1 Personal Software Process Stages 预估耗 ...
- 在DoNetCore MVC 中如何使用AutoMapper
刚开始,按照在donet mvc 的方法写了一遍,发现行不通啊,于是百度了一下,找到这么一篇 https://stackoverflow.com/questions/41284349/automapp ...
- 【robotframework】pycharm+robotframe
一.环境搭建 二.框架介绍 1.settings 是这个测试套件的全局配置表 说明这个测试套件要使用的测试库.资源文件 测试套件的环境初始化(setup)和清除(teardown) 该套件内的标签等 ...
- Replication Controller 和 Replica Set
使用Replication Controller . Replica Set管理Pod Replication Controller (RC) 简写为RC,可以使用rc作为kubectl工具的快速管理 ...
- Python+Selenium+Appium对APP进行UI自动化测试
1. 安装Python3.7版本 pythonjava的JDK java -version javac nodejs node --versionappium 若nodejs安装完毕,使用npm安装a ...
- Guava Cache 工具类
maven依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava&l ...