JavaScript-----静态成员在ES5和ES6中的实现
在学习静态成员在ES5和ES6中的实现之前我们先来了解一下静态成员的定义。
静态成员 :类的所有对象共享的成员(类的成员变量(属性)和成员方法)
看完这个定义我相信大家还是不太了解静态成员是什么意思,我们通俗一点讲就是修改了静态成员所有对象里的该成员都会修改。比如:我是“西安邮电大学”的同学,那么我们学校毕业的所有学生学生证上都会是“西安邮电大学”,如果我们学校现在改了名字叫“bilibili大学”,如果我们一个一个修改学生证的学校名称就会比较繁琐,这种方法就像是修改每一个对象的该属性值,这个时候我们就可以把学校名称设置为静态成员,只用修改这个静态成员那么所有学生学生证上的学校名称就会一起修改。
⭐ES5当中定义静态成员的方法
1、静态属性:构造方法名.属性名 //该属性是静态的,为所有对象共享
2、静态方法:构造方法名.方法名(){}//该方法是静态的,为所有对象共享
function Student(name, age) {//定义构造方法this.name = namethis.age = agethis.showInfo = function () {console.log('学校', Student.school);console.log('姓名', this.name);console.log('年龄', this.age);console.log(Student.show());}
}
Student.show = function () {return '我要变身啦'
}//show就是Student类的静态成员函数(静态属性),
//Stdent的所有对象共享该属性
Student.school = '西安邮电大学'
var s1 = new Student('曹操', 12)
var s2 = new Student('袁绍', 21)
var s3 = new Student('刘备', 17)
s1.showInfo()
s2.showInfo()
s3.showInfo()
console.log('-----------------');
//修改school和show
Student.show = function () {return '我已经变身啦'
}
Student.school = 'bilibili大学'
s1.showInfo()
s2.showInfo()
s3.showInfo()
⭐ES6中定义静态成员的方法
通过 关键子来定义静态成员
class Student{static school='aaaa'//静态属性constructor(name,age){this._name=namethis._age =age}static fun(){return '我是静态的'}show(){console.log('学校', Student.school);console.log('姓名', this._name);console.log('年龄', this._age);console.log(Student.fun());}
}
var s1 = new Student('曹操', 12)
var s2 = new Student('袁绍', 21)
var s3 = new Student('刘备', 17)
Student.school='中国邮电大学'
s1.show()
s2.show()
s3.show()
console.log('--------------');
Student.fun = ()=>{return '这个函数好奇怪'
}
Student.school='bilibili大学' s1.show()
s2.show()
s3.show()
JavaScript-----静态成员在ES5和ES6中的实现相关推荐
- ES5和ES6中的变量声明提升
ES5和ES6中的变量声明提升 Example1: a=2; var a; console.log( a ); //结果为2 Example2: console.log( a ); //结果是unde ...
- ES5和ES6中的this指向
ES5和ES6中的this指向 ES5: 1.在普通函数中,this指向的是函数调用者,默认情况下,this指向的是window 2.在严格模式下,如果没有直接调用者,在函数中,this的值为unde ...
- ES5和ES6中对于继承的实现方法
在ES5继承的实现非常有趣的,由于没有传统面向对象类的概念,Javascript利用原型链的特性来实现继承,这其中有很多的属性指向和需要注意的地方. 原型链的特点和实现已经在之前的一篇整理说过了,就是 ...
- JavaScript从入门到放弃 - ES6中的对象和类
重点讲解Tab栏切换.增.删.改 1. 面向过程与面向对象 2.ES6 中的对象与类 2.1 对象 2.2 类 2.2.1 创建类 2.2.1.1 语法 2.2.1.2 实例 2.2.2 类创建添加属 ...
- es5与es6中如何处理不确定参数?以及es6中rest parameter的强大之处
本人学习过程中编写,定有不足之处,如果有错误,请您积极指正:如果有帮助,请不要吝啬您的赞美(点赞),欢迎各位大佬点赞评论. es5中处理不确定参数(arguments) function sum(){ ...
- ES5与ES6中如何实现继承
ES5中实现继承 // 使用类或不使用类继承 // 继承 (2个类连起来) function Animal (lengthNumber) {this.lengthNumber = legsNumber ...
- 在 ES6中 改良的5个 JavaScript “缺陷”
[译]在 ES6中 改良的5个 JavaScript "缺陷" 原文:http://www.zcfy.cc/article/315 http://www.75team.com/po ...
- 【JavaScript】ES5和ES6面向对象
前言(Preface) Object Oriented 的一个标志就是 Class (类),通过类可以创建任意多个具有相同属性和方法的对象.然而,JavaScript中只有对象,没有类. ECMA-2 ...
- ES6 中 class 和 extends 的es5实现
ES6 中 class 和 extends 实现原理 在学习中,我们通常会遇到这种场景,在阅读某段实现源码时我们往往能看懂大部分代码,但是却卡在其中的一两个点,导致无法继续阅读. 所以在这里我会先列出 ...
最新文章
- 物联网激荡MEMS传感器浪潮
- SpeedNet: Learning the Speediness in Videos
- mysql的存储过程与事务_mysql的存储过程与事务入门
- stm32 之引脚和各功能模块间关系
- 访问远程mysql数据库
- 电脑表格日期怎么修改原有日期_为何电脑系统时间常出错或无法修改?怎么解决?...
- Spring 之注解事务 @Transactional
- 联想gen系列服务器,Hpe Microserver Gen10 Plus开箱
- java lambda map循环停止_Map 使用 Lambda 的 forEach 实现跳出循环操作
- 自己上手搭建VUE项目
- Understanding Deep Image Representations by Inverting Them
- 拼多多商家如何采集整店商品上传?
- 一个懒得程序员才是一个好的程序员
- DLP3010EVM-LC and DLP2010EVM-LC常见问题答疑
- Sentinel 极简入门
- 给大家推荐几款简洁实用电脑软件!
- 植王分享:养兰花的十大好处
- php公众号提现功能,微信公众号打赏的钱怎么提现_微信公众号打赏功能_微信公众号打赏从哪里取出来...
- JMX 入门(一)基础操作
- %公式在计算机中怎么使用,在Excel 2013公式中使用函数并移动和复制——想象力电脑应用...