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 ...
随机推荐
- python 3.url了解与基础使用
URL使用 视图: 我们运行项目在网页上查看到的我们称之为视图 视图一般在views.py下编辑 它的第一个参数永远都是request,通过它请求一些数据返回给网页给我们查看. 视图函数的返回结果必须 ...
- 线程并发工具类之CountDownLatch的使用及原理分析
原文链接:http://www.studyshare.cn/blog/details/1149/1 java开发工具下载地址及安装教程大全,点这里.更多技术文章,在这里. 一.定义 CountDown ...
- P2613 【模板】有理数取余 (数论)
题目 P2613 [模板]有理数取余 解析 简单的数论题 发现并没有对小数取余这一说,所以我们把原式化一下, \[(c=\frac{a}{b})\equiv a\times b^{-1}(mod\ p ...
- Spring AOP无法拦截Controller的原因
因为Spring的Bean扫描和Spring-MVC的Bean扫描是分开的, 两者的Bean位于两个不同的Application, 而且Spring-MVC的Bean扫描要早于Spring的Bean扫 ...
- ASP.Net超时时间已到解决办法-
解决办法 1.在代码里面,把未关闭的连接关闭 2.扩大共享池,方法如下: 解决方法可以是修改连接池的连接生存期,因为默认值是60秒,即连接从应用程序被释放后可以在池中保存的时间. 具体操作步骤如下: ...
- js正则表达式【续】(相关字符的解释含义)
1.字符类[直接量] . (点号,小数点) 匹配任意单个字符,但是行结束符除外\d 匹配一个0-9之间的阿拉伯数字.等价于[0-9]\D 匹配任意一个不是0-9之间阿拉伯数字的字符.等价于[^0 ...
- 结对项目(python) 黄浩伟 黄飞越
作者:黄浩伟 黄飞越 一 .Github项目地址: https://github.com/Flying123haha/123.git 二.psp表格: PSP2.1 Personal Softwar ...
- php exec执行视频图片转换
首先安装ffmpeg <?php set_time_limit(0) ; $cmd = "ffmpeg -i 'input/3.mp4' -r 1 -q:v 2 -f image2 i ...
- php无限分类方法类
创建数据库以及表 CREATE DATABASE `sortclass`DEFAULT CHARSET utf8; CREATE TABLE IF NOT EXISTS `class` ( `cid` ...
- Spring AOP无法拦截内部方法调用
当在同一个类中,A方法调用B方法时,AOP无法工作的问题 假设一个接口里面有两个方法: package demo.long; public interface CustomerService { pu ...