📜  JavaScript Object.prototype.__defineGetter__() 方法(1)

📅  最后修改于: 2023-12-03 15:31:38.063000             🧑  作者: Mango

JavaScript Object.prototype.defineGetter() 方法

Object.prototype.__defineGetter__() 方法允许向对象添加一个新的属性,并将该属性的值设置为一个函数,当我们在访问该属性时就会调用该函数。这个方法通常用于属性的计算属性值或者允许读取私有属性。

用法
Object.prototype.__defineGetter__(prop, getFn);

参数

  • prop:表示要定义的属性名称的字符串。
  • getFn:表示一个函数,该函数作为被定义属性的 getter 函数。

示例

const person = {
  firstName: 'John',
  lastName: 'Doe',
  get fullName() {
    return `${this.firstName} ${this.lastName}`;
  }
};

console.log(person.fullName); // 'John Doe'

在这个示例中,我们定义了一个名为 fullName 的属性,并使用 get 关键字定义了一个计算属性来计算完整的名称。在访问 person.fullName 属性时,将自动调用 get fullName() 方法,并返回计算后的结果。

我们还可以使用 Object.prototype.__defineSetter__() 方法定义 setter 函数,如下所示:

const person = {
  firstName: 'John',
  lastName: 'Doe',
  get fullName() {
    return `${this.firstName} ${this.lastName}`;
  },
  set fullName(value) {
    const parts = value.split(' ');
    this.firstName = parts[0];
    this.lastName = parts[1];
  }
};

person.fullName = 'Jane Smith';
console.log(person.firstName); // 'Jane'
console.log(person.lastName); // 'Smith'

在这个示例中,我们定义了一个名为 fullName 的属性,并使用 getset 关键字定义了一个计算属性来计算和设置完整的名称。在调用 person.fullName = 'Jane Smith' 时,将自动调用 set fullName(value) 方法,并设置 firstNamelastName 属性的值。