Es6 的类(class)
2024-10-19 14:42:02
首先根据es5的类(原型对象)的基本点做参照。
序号 | 基本点 | es5 | >es6 |
---|---|---|---|
1 | 实例属性(方法) | √ | √ |
2 | 原型属性(方法) 或 公共属性(方法) | √ | √ |
3 | es5的私有变量 或 私有属性 | √ | |
4 | 静态方法和静态属性 | √ | √ |
5 | set 和 get | √ | √ |
6 | protected | ||
6 | 继承 | √ | √ |
ps: 私有属性和私有变量并非相等,私有属性可在类与类之间直接传递,Es6现在没有或再提议。
// es5的私有变量间接通过实例方法传递和修改
function Person() {
var privateVariable = '私有变量';
this.getPrivateVarivable = function () {
return privateVariable;
}
this.setPrivateVarivable = function (val) {
privateVariable = val;
}
}
概过:Es6 没有protected
,私有属性private
没有,只有5点:
- 实例属性
- 公共
- 静态
- set 和 get
- 继承
class Parent {
constructor(name='baba'){
// 实例属性
this.name=name;
// 实例方法
this.fn = () => {
// todo
}
// 初始化执行某方法
this.someMethod();
}
// 公共方法
someMethod () {
// todo
}
// 静态方法
static function () {
// todo
}
get longName () {
return `lc_${this.name}`;
}
set longName (val) {
this.name = val;
}
}
// 公共属性
Parent.prototype.type = 'super';
// 静态属性
Parent.name = 'fn parent';
const parent = new Parent();
parent.longName; // lc_baba
parent.longName = '666';
parent.longName; // 'lc_666'
class Child extends Parent {
constructor(...args) {
// super()一定要有,并在construtor内第一行的位置
super(...args);
// 执行父类某方法时,不同事执行子类继承过来的方法
// super.someMethod();
this.someMethod();
}
some () {
// todo
}
}
最新文章
- C# Linq排序
- sql server如何分组编号
- 备份触发器:ADDC3
- 怎么修改git提交过的内容
- Vue.2.0.5-事件处理器
- Spring入门(3)-Spring命名空间与Bean作用域
- Cloud Insight 现在已经支持监控 Cassandra 啦!
- Android倒计时Button
- input输入框校验,字母,汉字,数字等
- HBase表重命名
- js 实现控制点击事件在特定的毫秒内 只允许点击一次(防止重复点击)
- 【转】Oracle系列导航目录
- Django 请求类型
- Python Flask学习笔记之模板
- 软工实践——结对作业2【wordCount进阶需求】
- HDU 4849 - Wow! Such City!
- Hive中自定义Map/Reduce示例 In Java
- jdbc第二天
- 线上服务内存OOM问题定位
- UVa 1585 - Score - ACM/ICPC Seoul 2005 解题报告 - C语言