首页 > 解决方案 > Typescript - Setter/Getter 的优点?

问题描述

我是一名后端开发人员,主要使用 Java 开发,所以我被教导使用 setter/getter,而不是直接访问类的属性。

现在我进入了前端世界,现在进入了 js/ts。我见过很多人直接访问对象变量,而无需像在 Java 中那样使用 setter 和 getter,例如this.person.name.

为什么是这样?如果您不需要添加额外的代码而只是为了获取值或设置它,那么在 ts 和 js 上使用 getter/setter 是否有任何优势?

谢谢。

标签: javascripttypescriptsettergetter

解决方案


使用 getter 或 setter 与直接访问对象变量之间的区别在于 getter/setter 在赋值时自动调用。所以它看起来就像一个普通的属性,但在幕后你可以在分配之前或之后运行额外的逻辑(或检查)。

因此,如果您决定将这种额外逻辑添加到已具有引用的现有对象属性之一,您可以将其转换为 getter/setter 样式,而无需更改有权访问该属性的其余代码。

let person = {
    _age: 50,

    set age(newage){
      if(typeof newage === 'number'){
           this._age = newage;
            console.log('valid input')
      }
      else{
           console.log ('Invalid input');
      }
    }

  };

推荐阅读