JavaScript ES6类中如何省略this关键字的重复引用?
JavaScript类中省略this引用的可行方案
JavaScript本身没有原生支持省略类实例this引用的官方语法,目前主流有以下几种落地方式:
1. 方法内解构赋值(最推荐)
在类方法开头将需要用到的实例属性从this上解构出来,不需要修改属性的场景下可以直接使用解构后的变量:
class Bind { a; b; constructor(a, b) { this.a = a; this.b = b; } describe() { // 一次性解构需要的属性 const { a, b } = this; console.log(a); console.log(b); // 如果是引用类型属性,修改解构值也会同步到实例 // 如果是基础类型属性需要回写,还是要使用 this.xxx = xx 赋值 } }
该方案无兼容性问题,不需要额外编译工具支持,也不会引入额外语法风险,是目前生产环境最通用的解决方案。
2. with语句(不推荐)
可以通过with语句把this绑定到当前作用域链,直接读取属性:
describe() { with(this) { console.log(a); console.log(b); } }
但with语句会破坏正常的作用域查找规则,导致代码性能下降、调试难度升高,且在严格模式下被直接禁用,完全不建议在生产环境使用。
3. 编译时语法扩展
如果项目有配置babel等编译工具,可以引入对应的非标准语法插件,实现类方法内省略this的语法支持。该方案属于自定义语法扩展,可移植性差,离开当前编译环境无法直接运行,仅适合特定场景下使用。
内容的提问来源于stack exchange,提问作者Ling
相关产品推荐
相关产品推荐

