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); // aasub.fn(); // bbbSubClass.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中的class
原文地址:https://www.cnblogs.com/ye-hcj/p/10350581.html