javascript - ES6 类 getter 或 setter 中属性名称前的下划线 (_) 有什么作用?
问题描述
我的类的原始版本(没有下划线)出现最大堆栈大小错误,当我查看它时,我最终看到了一些示例,其中包括在 getter/setter 中引用类属性时添加下划线;在对推荐的任何其他内容过于花哨之前,我只是添加了下划线并运行了程序,仅此一项就解决了问题。这是如何运作的?在这种情况下,下划线在做什么?据我了解,它可以防止堆栈在递归无限循环中一遍又一遍地调用setter,但是添加下划线是如何实现的呢?
作为参考,我在 Node.js 应用程序中使用 ES6 语法。
原来的:
set serialNumber(serialNumber) {
this.serialNumber = serialNumber;
}
更正:
set serialNumber(serialNumber) {
this._serialNumber = serialNumber;
}
解决方案
它没有特殊含义,但它使属性名称与众不同。
setterset serialNumber
处理设置serialNumber
属性的调用。如果您尝试在 setter 中设置相同的属性,那么 setter 会递归调用自身并且永远不会终止。
这是命名用于在类中使用的“私有”数据属性的许多约定之一,但它对 JS 运行时没有特别的意义。
推荐阅读
- javascript - 关于我的 jquery 元素迭代的问题
- javascript - 如何让我的代码排序数据从 Reddit 提取为 JSON 文本?
- vb.net - 将 OracleDbType.Date 转换为 Date 无效
- java - 如何在单击按钮时自动调整背景颜色?
- javascript - 从javascript函数执行得到错误的计算
- php - 从wordpress中的作者搜索中获取所有帖子
- java - Spring Data Rest Put 未在 SpringBoot 2.1.x 上使用不可变实体进行更新
- powerbi - 根据不同计数计算价格
- mongodb - 数组中的匹配数组过滤器未提供所需结果
- command-line - 从“p4 add”添加的文件未显示在 p4v 默认更改列表中