标签:键值 const 没有 ati 父类 处理 ons def tor
类写法
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
标签:键值 const 没有 ati 父类 处理 ons def tor
原文地址:https://www.cnblogs.com/ye-hcj/p/10350581.html