object.defineproperty get set
时间: 2023-04-05 16:03:04 浏览: 83
Object.defineProperty 是 JavaScript 中的一个方法,用于定义对象的属性。其中 get 和 set 是属性的访问器方法,用于获取和设置属性的值。get 方法用于获取属性的值,set 方法用于设置属性的值。通过使用 Object.defineProperty 方法,我们可以自定义对象的属性,并且可以控制属性的访问方式。
相关问题
Object.defineProperty 触发set
Object.defineProperty方法可以实现简单的双向绑定。通过使用该方法改变或添加对象的属性,并在修改属性时触发set方法。set方法中可以执行一些操作,比如打印日志或更新其他相关属性的值。
例如,我们可以定义一个名为`data1`的对象,并使用`Object.defineProperty`来定义该对象的`age`属性。在set方法中,我们可以打印出新的年龄值。
```javascript
let data1 = { name:'小明', age:18 };
Object.defineProperty(data1, 'age', {
set: function(newAge) {
console.log(this.name + '现在' + newAge + '岁');
},
get: function() {
return 18;
}
});
data1.age = 18; // 控制台输出:小明现在18岁
data1.age = 19; // 控制台输出:小明现在19岁
console.log(data1.age); // 控制台输出:18
```
在上述例子中,当我们修改`data1`对象的`age`属性时,会触发set方法。set方法中的代码会打印出新的年龄值。同时,我们也可以通过get方法获取属性的值。
Object.defineProperty()的get和set方法
`Object.defineProperty()` 方法用于在一个对象上定义一个新属性或修改一个已经存在的属性,其中可以设置 `get` 和 `set` 方法来控制属性值的读取和修改。
- `get` 方法:当访问该属性时被调用,它会返回该属性的值。如果省略 `get` 方法,则该属性不能被读取。
- `set` 方法:当为该属性设置值时被调用,它会接收一个参数,即要设置的新值。如果省略 `set` 方法,则该属性不能被修改。
下面是一个示例,使用 `Object.defineProperty()` 方法来定义一个 `person` 对象,并且设置 `get` 和 `set` 方法:
```javascript
const person = {};
let age = 25;
Object.defineProperty(person, 'age', {
get() {
console.log('Getting the age');
return age;
},
set(newAge) {
console.log(`Setting the age to ${newAge}`);
age = newAge;
}
});
console.log(person.age); // Getting the age, 25
person.age = 30; // Setting the age to 30
console.log(person.age); // Getting the age, 30
```
在上面的示例中,我们使用 `Object.defineProperty()` 方法来定义了一个 `person` 对象,并且设置了 `age` 属性的 `get` 和 `set` 方法。当我们读取 `person.age` 属性时,`get` 方法会被调用,并且会输出 `Getting the age`。当我们为 `person.age` 属性设置一个新值时,`set` 方法会被调用,并且会输出 `Setting the age to 30`。