es6中什么是类的静态成员
在es6中,由类直接调用的属性和方法叫静态成员。在类里面对变量、函数加static关键字,那它就是静态成员;静态成员不会被实例化成为新对象的元素。静态成员和实例成员的区别:1、实例成员属于具体的对象,而静态成员为所有对象共享;2、静态成员是通过类名或构造函数访问,实例成员是通过实例化的对象访问。
本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。
面向对象
面向对象的主要思想就是把需要解决的问题分解成一个个对象,建立对象不是为了实现一个步骤,而是为了描述每个对象在解决问题中的行为,面向对象的核心是对象。
面向对象的优势:
- 模块化更深,封装性强
- 更容易实现复杂的业务逻辑
- 更易维护、易复用、易扩展
面向对象的特征:
- 封装性: 对象是属性和行为的结合体
- 多态性: 同一消息被不同的对象接收后 会产生不同的效果
- 继承性: 子类可以继承父类的信息
ES6面向对象语法
ES6:ES是ECMAScript的简写,它是JavaScript的语法规范。ES6是在ES5基础上扩展,增加了面向对象编程的相关技术以及类的概念。
类和对象
类:具有相同属性和行为的集合称为类(类是对象的抽象),类中的大多数数据只能用本类的方法进行处理。
对象:是类的实例(是类的具体化)
class关键字:用来定义类的
class 类名{// "类名"是一个用户标识符 通常建议首字母大写 属性; 函数; }
构造函数
在ES6中使用constructor()来定义构造函数,作用是初始化对象的属性(成员变量),构造函数不是必须的,若用户没有定义构造函数,系统会生成一个默认的、无参的构造函数。
普通的成员函数
函数名([参数]){ 函数体语句 }
变量名 = function([参数]){ 函数体语句 }
class Person{ constructor(name,age,sex){// 构造函数 初始化对象的成员 this.name = name;// this指向构造函数新创建的对象 this.age = age; this.sex = sex; } tt = function(){ //普通的成员函数 console.log(this.name); console.log(this.age); console.log(this.sex); } } var p = new Person('李相赫',25,'男')// p1是一个对象 通过调用构造函数对p1的三个属性进行了初始化 p.fun();
class Circle{// 定义类Circlie constructor(r){ this.radius = r; }; area(){ // 计算圆的面积 var s = Math.PI*this.radius**2; return s; }; // 计算圆的周长 CircleLength = function(){ return 2*Math.PI*this.radius; }; }; var c1 = new Circle(5); console.log('半径为5的圆的面积='+c1.area()); console.log('半径为5的圆的周长='+c1.Circle_length());
结果如下:
// 用类实现简单的四则运算 class Number{// 定义类Number constructor(n1,n2){ this.n1=n1; this.n2=n2; }; add(){ var sum = this.n1+this.n2; return sum; }; sub(){ var sum1 = this.n1-this.n2; return sum1; }; mut(){ var sum2 = this.n1*this.n2; return sum2; }; p(){ if(this.n2!=0){ var sum3 = this.n1/this.n2; return sum3; } } } var p1 = new Number(12,21); console.log(p1.add()); console.log(p1.sub()); console.log(p1.mut()); console.log(p1.p());
ES6中类的继承
在JavaScript中,继承用来表示两个类之间的关系,子类可以继承父类的一些属性和方法,在继承以后还可以增加自己独有的属性和方法。
语法:
class 子类名 extends 父类名{ 函数体语句; };
关于继承需要注意:
- 父类必须已经定义
- 子类又称为派生类 可以继承父类的属性和函数
- 子类不能继承父类的构造函数
super关键字
子类不可以继承父类的构造函数,如果要调用父类的构造函数可以使用super关键字。
**注意:**在子类的构造函数中使用super调用父类的构造函数,则调用语句必须作为子类构造函数的第一条语句
调用父类构造函数
super([参数])
调用普通成员函数
super.函数名([参数])
方法覆盖
若子类中定义的函数与父类中的函数同名,子类函数覆盖父类中的函数,可以在子类中调用父类的同名的普通成员函数来解决
class Father{ //父类(基类或超类) constructor(type,color){ this.type = type; this.color = color; } money(){ console.log(100); } show(){ console.log('类型:'+this.type); console.log('颜色:'+this.color); } } class Son extends Father{ //Son是子类(又称派生类) constructor(type,color,weight){ super(type,color); //调用父类的构造函数 要放在首位 this.weight = weight; }; show(){ super.show();// 调用父类的普通成员函数 console.log('重量:'+this.weight); }; other(){ return '子类的其他方法'; }; }; var s1 = new Son('iPhone 12','黑色','3000g');//s1为子类的实例 s1.show(); console.log(s1.other());
静态成员和实例成员
静态成员:通过类名或构造函数访问的成员
实例成员:通过实例对象访问的成员称为实例成员
区别:
- 实例成员属于具体的对象,而静态成员为所有对象共享
- 静态成员是通过类名或构造函数访问,实例成员是通过实例化的对象访问
在ES5中定义静态属性
function Student(name,age,sex){ Student.school = '西安邮电大学';// school是静态成员 this.name = name; this.age = age; this.sex = sex;// name age sex都是实例成员 this.show = function(){ console.log('姓名:'+this.name); console.log('年龄:'+this.age); console.log('性别:'+this.sex); }; }; var f = new Student('李相赫',23,'男'); f.show(); console.log(Student.school);// 西安邮电大学 console.log(f.school);// undefined
在ES6中静态属性定义
1、先创建类
2、在类的外部定义静态属性:类名.静态属性名
class Foo{ constructor(){ this.color = '红色';// color是实例成员 } } Foo.prop = 45;// prop是静态成员 var f1 = new Foo(); console.log('静态属性:'+Foo.prop);// 45 console.log(f1.prop);// undefined
在ES7中静态属性定义
在类定义时 使用static关键字定义静态属性
class Foo{ static prop = 45; //prop是静态成员 constructor(){ this.color = '红色'; } } var f2 = new Foo(); console.log('静态属性:'+Foo.prop);// 45 console.log(f2.prop);// undefined
类和构造函数的区别
类中的成员方法是定义在类中的,使用类创建对象后,这些对象的方法都是引用了同一个方法,这样可以节省内存空间。
class Person { sing(){ console.log('hello'); } } var p1 = new Person(); var p2 = new Person(); console.log(p1.sing === p2.sing); // 输出结果:true
【相关推荐:javascript视频教程、web前端】
以上是es6中什么是类的静态成员的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

如何使用WebSocket和JavaScript实现在线语音识别系统引言:随着科技的不断发展,语音识别技术已经成为了人工智能领域的重要组成部分。而基于WebSocket和JavaScript实现的在线语音识别系统,具备了低延迟、实时性和跨平台的特点,成为了一种被广泛应用的解决方案。本文将介绍如何使用WebSocket和JavaScript来实现在线语音识别系

WebSocket与JavaScript:实现实时监控系统的关键技术引言:随着互联网技术的快速发展,实时监控系统在各个领域中得到了广泛的应用。而实现实时监控的关键技术之一就是WebSocket与JavaScript的结合使用。本文将介绍WebSocket与JavaScript在实时监控系统中的应用,并给出代码示例,详细解释其实现原理。一、WebSocket技

如何利用JavaScript和WebSocket实现实时在线点餐系统介绍:随着互联网的普及和技术的进步,越来越多的餐厅开始提供在线点餐服务。为了实现实时在线点餐系统,我们可以利用JavaScript和WebSocket技术。WebSocket是一种基于TCP协议的全双工通信协议,可以实现客户端与服务器的实时双向通信。在实时在线点餐系统中,当用户选择菜品并下单

如何使用WebSocket和JavaScript实现在线预约系统在当今数字化的时代,越来越多的业务和服务都需要提供在线预约功能。而实现一个高效、实时的在线预约系统是至关重要的。本文将介绍如何使用WebSocket和JavaScript来实现一个在线预约系统,并提供具体的代码示例。一、什么是WebSocketWebSocket是一种在单个TCP连接上进行全双工

JavaScript和WebSocket:打造高效的实时天气预报系统引言:如今,天气预报的准确性对于日常生活以及决策制定具有重要意义。随着技术的发展,我们可以通过实时获取天气数据来提供更准确可靠的天气预报。在本文中,我们将学习如何使用JavaScript和WebSocket技术,来构建一个高效的实时天气预报系统。本文将通过具体的代码示例来展示实现的过程。We

JavaScript教程:如何获取HTTP状态码,需要具体代码示例前言:在Web开发中,经常会涉及到与服务器进行数据交互的场景。在与服务器进行通信时,我们经常需要获取返回的HTTP状态码来判断操作是否成功,根据不同的状态码来进行相应的处理。本篇文章将教你如何使用JavaScript获取HTTP状态码,并提供一些实用的代码示例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用于在DOM树中插入一个新的节点。这个方法需要两个参数:要插入的新节点和参考节点(即新节点将要被插入的位置的节点)。

JavaScript是一种广泛应用于Web开发的编程语言,而WebSocket则是一种用于实时通信的网络协议。结合二者的强大功能,我们可以打造一个高效的实时图像处理系统。本文将介绍如何利用JavaScript和WebSocket来实现这个系统,并提供具体的代码示例。首先,我们需要明确实时图像处理系统的需求和目标。假设我们有一个摄像头设备,可以采集实时的图像数
