Javascript原型语法-变量名以下划线开头

Javascript原型语法-变量名以下划线开头,javascript,prototype,Javascript,Prototype,我正在学习一个在线教程,遇到了一些我很难理解的javascript代码。javascript中定义了一个名为Note()的函数。下面是在prototype部分添加getter和setter的代码。我不明白为什么变量_id前面有下划线?下划线的用途是什么?何时使用 Note.prototype = { get id() { if (!("_id" in this)) this._id = 0; return this._id;

我正在学习一个在线教程,遇到了一些我很难理解的javascript代码。javascript中定义了一个名为Note()的函数。下面是在prototype部分添加getter和setter的代码。我不明白为什么变量_id前面有下划线?下划线的用途是什么?何时使用

Note.prototype = {
    get id() {
        if (!("_id" in this))
            this._id = 0;
        return this._id;
    },

    set id(x) {
        this._id = x;
    },

    get text() {
        return this.editField.innerHTML;
    },

    set text(x) {
        this.editField.innerHTML = x;
    }

我缩小了问题的范围,重新提出了这个问题

事实证明,“name”和“_name”是两个完全独立的变量。如果我们在setter和getter中使用'name',它会导致函数的无限递归调用,这就是它不能正常工作的原因

你可以在这里找到这个问题的回复和其他信息


这只是一个表示变量是私有的约定。为什么我去掉下划线后它就不起作用了?
id
是由它的getter和setter定义的,不能对存储值的属性使用相同的名称。因此,如果我在类中定义id并将其设置为null。我可以去掉getter和setter的下划线吗?我试着在类中定义变量并去掉下划线。如果没有下划线,代码将无法正常工作。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能无效。请使用问题上的“编辑”链接添加其他信息。“发布答案”按钮只能用于完整回答问题。谢谢@fracz。我很快就会更新。谢谢你@Gary。我会很快更新。你可以简单地编辑这个问题,因为你还没有答案。自从这个问题变成了转帖,我现在已经欺骗了你的帖子。