📅  最后修改于: 2023-12-03 15:31:38.063000             🧑  作者: Mango
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
的属性,并使用 get
和 set
关键字定义了一个计算属性来计算和设置完整的名称。在调用 person.fullName = 'Jane Smith'
时,将自动调用 set fullName(value)
方法,并设置 firstName
和 lastName
属性的值。