x
 
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 对象</h1>
 
<h2>Object.defineProperty() 方法</h2>
 
<p>JavaScript 的 Getters 和 Setters 非常适合用于创建计数器:</p>
 
<p id="demo"></p>
 
<script>
// 定义一个对象
const obj = {counter: 0};
 
// 定义 Setters 和 Getters
Object.defineProperty(obj, "reset", {
  // 通过 getter 方法重置计数器
  get: function () { this.counter = 0; }
});
Object.defineProperty(obj, "increment", {
  // 通过 getter 方法增加计数器
  get: function () { this.counter++; }
});
Object.defineProperty(obj, "decrement", {
  // 通过 getter 方法减少计数器
  get: function () { this.counter--; }
});
Object.defineProperty(obj, "add", {
  // 通过 setter 方法增加指定值的计数器
  set: function (value) { this.counter += value; } 
});
Object.defineProperty(obj, "subtract", {
  // 通过 setter 方法减少指定值的计数器
  set: function (value) { this.counter -= value; }
});
 
// 操作计数器:
obj.reset; // 重置计数器
obj.add = 5; // 增加 5
obj.subtract = 1; // 减少 1
obj.increment; // 增加 1
obj.decrement; // 减少 1
// 显示计数器的当前值
document.getElementById("demo").innerHTML = obj.counter;
</script>
 
</body>
</html>