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 ...
随机推荐
- 如何导出UML图片以及小人的组件在哪里
首先先要创建一个新项目 接着在右侧栏目创建一个modal 添加usecase,里面就有小人的组件(注意:是Add Diagram) 将做好的图进行保存程jpg格式(快捷键 ctrl +shift+D) ...
- vue辅助函数mapStates与mapGetters
状态管理器 <!-- store.js: --> import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export de ...
- php 数组去空
1.preg_grep("/\S+/i", $data); 2.array_filter($data); 3.for($data $k = > $v) { if(!$v) u ...
- Html-元素类型笔记
注意点: 元素类型分为 块级元素 和 行内元素 块级元素: 在网页中以块的形式显示,默认情况都会占据一行,两个相邻的块级元素不会出现并列显示的元素,按照顺序自上而下排列. 块级元素可以定义自己的宽度和 ...
- Excel工作表密码保护的破解
操作步骤:打开Visual Basic编辑器,单击“插入-->模块“,将以下代码粘贴到模块中即可. Sub DelPassword() ActiveSheet.Protect DrawingOb ...
- android 各个存储路径及获取方法总结
最长用到的就这三个位置 /data/data/包名/ /sdcard/Android/data/包名/ /sdcard/xxx 前两个是应用内部存储, 会随着app的卸载而自动删除, sdcard中其 ...
- 如何免费试用SAP的Fiori应用
什么是SAP Fiori?SAP Fiori不是SAP发布的某款产品,而是SAP新一代UI设计风格和用户体验的代号. Fiori是一个意大利语中的单词,意思是"花": 不得不说SA ...
- 源码解析-url状态检测神器ping-url
前言 ping-url是我最近开源的一个小工具,这篇文章也是专门写它设计理念的科普文. 为什么会做这个ping-url开源工具呢? 起因是:本小哥在某天接到一个特殊的需求,要用前端的方式判断任意一个u ...
- xml和json的判断格式是否相等
手动撸了个 xml 和 json 格式匹配的代码. /** * 判断数据的结构.遍历节点然后去对应的json那边查找是否存在这样的节点 * * @param root 配置的xml所对应的对Eleme ...
- day 09 预科
目录 函数 定义函数 函数定义的三种形式 空函数 有参函数(有参数()的函数) 无参函数 函数的返回值 函数的参数 形参 位置形参 实参 位置实参 关键字实参 函数 def twoSum(nums,t ...