Object.defineProperty()中的set和get怎么配置
时间: 2024-06-17 11:06:32 浏览: 70
Java通过PropertyDescriptor反射调用set和get方法
5星 · 资源好评率100%
在使用Object.defineProperty()方法时,我们可以通过set和get配置属性的setter和getter方法。
首先,set方法用于设置属性的值,并且可以进行一些额外的操作,例如验证输入值是否合法。下面是一个set方法的示例:
```
let obj = {};
let value = '';
Object.defineProperty(obj, 'name', {
set: function(newValue) {
console.log('Setting value to ' + newValue);
value = newValue.toUpperCase();
}
});
obj.name = 'john';
console.log(value); // "JOHN"
```
在这个示例中,我们定义了一个对象`obj`,然后通过`Object.defineProperty()`方法定义了一个属性`name`。我们在`set`方法中设置了输入值的大写形式,并将其存储在`value`变量中。当我们给`obj.name`赋值时,会触发`set`方法,并将值转换为大写形式。最终,我们通过`console.log()`打印出了`value`变量的值。
接下来,get方法用于获取属性的值,并且可以进行一些额外的操作,例如格式化输出值。下面是一个get方法的示例:
```
let obj = {};
Object.defineProperty(obj, 'name', {
get: function() {
return 'My name is ' + this._name;
}
});
obj._name = 'John';
console.log(obj.name); // "My name is John"
```
在这个示例中,我们定义了一个对象`obj`,然后通过`Object.defineProperty()`方法定义了一个属性`name`。我们在`get`方法中返回一个格式化后的字符串,并将对象的`_name`属性插入其中。当我们读取`obj.name`属性时,会触发`get`方法,并返回格式化后的字符串。最终,我们通过`console.log()`打印出了这个字符串。
阅读全文