如何理解ES6类的私有实例方法?验证其与实例字段的安装顺序
JavaScript私有实例方法的执行顺序验证
私有实例方法
与公共实例方法不同,私有实例方法具备以下特性:
- 会在实例字段安装前立即完成安装;
- 仅在类的实例上可用,而非类的
.prototype属性。
为了搞懂“在实例字段安装前立即完成安装”这句话的含义,我写了一段测试代码:
class ClassWithPrivateMethod { publicField = 10 constructor(){ console.log(this); this.publicField = 20 } #privateMethod() { return 42; } } new ClassWithPrivateMethod();
控制台里能看到私有实例方法和实例字段都挂载到this上了,但没法直观看到它们的执行顺序,所以我想确认:#privateMethod是不是在publicField = 10之前就完成安装了?

@Pointy 居然真的是这样!太感谢了!
我又写了这段代码验证:
class ClassWithPrivateMethod { publicField = this.#privateMethod(); #privateMethod() { return 42; } } new ClassWithPrivateMethod();
这段代码能正常运行,说明初始化publicField的时候,#privateMethod已经可以被调用了,这就实锤了私有实例方法确实是在实例字段安装前完成安装的。
内容的提问来源于stack exchange,提问作者desen zhao
相关产品推荐
相关产品推荐

