JavaScript中的Getters和Setters(语法正确吗?)

Getters and Setters in JavaScript (Correct syntax ?)

本文关键字:语法 中的 Getters Setters JavaScript      更新时间:2023-09-26

我是JavaScript的新手,但不是OOP的新手。

这是创建getters&JavaScript中的setters?

"类",

function Person (age){
    this.age = age;
};

Getter,

Person.prototype.getAge = function(){
    return this.age;
};

和一个二传手。

Person.prototype.setAge = function(arg){
    this.age = arg;
};

它似乎很好用,但我不知道惯例,我到处都有不同的描述,但我的解决方案有效吗?

您可能想要Object.defineProperty(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty),这里有一个使用中的例子:

Object.defineProperty(Person.prototype, 'age', {
  get: function(){
    return this.__age__;
  },
  set: function(value){
    this.__age__ = value;
  }
});

如果需要,也可以在其他地方保存一个变量。以下将作为在Person的所有实例中设置和访问的单例值:

var age;
Object.defineProperty(Person.prototype, 'age', {
  get: function(){
    return age;
  },
  set: function(value){
    age = value;
  }
});

如果您希望为创建的Person对象的每个实例都有一个age变量,则需要在构造函数中添加变量声明:

function Person(){
  var age; 
  // ditto from the second example
}