ES6类中以独立语句编写类属性的作用?是否为属性初始化?
嘿,这个问题问到点子上了!咱们来好好拆解一下这段代码里那三行的作用和本质:
代码中独立语句形式类属性的解析
一、这三行语句的核心目的
- 充当代码文档/占位符:这是最常见的用途——提前告诉读代码的人,这个类的实例会用到
movie、currentFrame、displayer这三个属性。相当于给类的成员做了个“提前公示”,让代码结构更清晰,后续维护的时候不用翻遍整个constructor甚至类的其他方法,就能知道这个类有哪些关键实例属性。 - 早期JS的遗留写法(现在已过时):在ES6刚普及的时候,有些开发者习惯用这种方式“预声明”实例属性,但现在已经有更规范的写法了——直接在类的顶层(
constructor外面)写movie;就能声明实例字段,这种constructor里的独立访问语句已经没必要用了。 - 划重点:没有实际赋值行为:这三行只是单纯读取
this的对应属性,并没有给它们设置任何值,执行完之后这些属性依然是undefined,和你完全不写这三行、后续直接给this.movie赋值的效果一模一样。
二、这算不算属性初始化?
明确说:不算。
属性初始化的关键是给属性赋予初始值——哪怕是显式赋值undefined也算,比如:
this.movie = undefined; // 这才是正经的初始化
而原代码里的this.movie;只是一个属性访问表达式,没有赋值操作,根本没完成“初始化”这个动作,它更像是一种用代码写的注释,而非真正的属性初始化。
内容的提问来源于stack exchange,提问作者Joyce Babu
相关产品推荐
相关产品推荐

