js中的class
2024-08-25 10:00:08
js中的class
类写法
class SuperClass {
constructor(option) {
this.a = option;
} fn() {
console.log(this.b);
} static staticMethod() {
console.log("静态方法只能通过类调用")
} set sa(value){
this.a = value;
} get sa() {
return this.a;
}
} class SubClass extends SuperClass {
constructor(option) {
super(option.a); // 调用父类的构造函数
this.b = option.b
}
} const sub = new SubClass({a: "aaa", b: "bbb"});
sub.sa = "aa"
console.log(sub.sa); // aa
sub.fn(); // bbb
SubClass.staticMethod(); // 静态方法只能通过类调用
处理private数据
方式一:使用Symbols
symbol是唯一的并且是不可变的数据类型
class Demo {
constructor(option) {
const key = Symbol("key");
this[key] = option;
this.fn = () => {
console.log(this[key])
}
}
} const demo = new Demo("aaa");
console.log(demo[Symbol("key")]); // undefined
demo.fn(); // aaa 方式二:使用WeakMaps
WeakMaps键名是弱引用类型,键值可以是任意类型
如果键没有被其他强类型引用,会自动被垃圾回收掉
const key = new WeakMap();
class Demo {
constructor(option) {
key.set(this, option);
this.fn = () => {
console.log(key.get(this))
}
}
}
const demo = new Demo("aaa");
console.log(key.get[demo]); // undefined
demo.fn(); // aaa
最新文章
- JS组件系列——基于Bootstrap Ace模板的菜单和Tab页效果分享(你值得拥有)
- 任务型sql
- hdu-4452-Running Rabbits
- JAVA 显示图片的简单源码 分类: Java Game 2014-08-14 10:10 77人阅读 评论(0) 收藏
- Spring的lazy-init详解
- SqlTransaction的解析
- mysql grant 示例
- PHP使用curl伪造IP地址和header信息
- 【ASP.NET Web API教程】2 创建各种Web API
- win10 uwp 弹起键盘不隐藏界面元素
- JS监听对象属性改变
- php使用fastdfs
- 【译】第8节---EF Code First中配置类
- MDK5 and STM32Cube
- css限制显示字数,文字长度超出部分用省略号表示【转】
- C++头文件的工作原理
- [原创]nginx添加module之threads
- IO测试工具之fio详解(转)
- iOS状态栏详解(隐藏)
- Python 实现图片上表格的写入