为什么要对JavaScript计数器使用“获取”功能?

问题描述 投票:0回答:2

我以为我了解访问器中获取和设置函数的目的。但是在教程(W3Schools)中,他们给出了此示例。请注意,前三个是get,后两个是set。如果我们要突变set,为什么它们都不都是counter

// Define an object
var obj = {counter:0};

// Define Setters and Getters
Object.defineProperty(obj, "reset", {
  get : function () {this.counter = 0;}
});
Object.defineProperty(obj, "increment", {
  get : function () {this.counter++;}
});
Object.defineProperty(obj, "decrement", {
  get : function () {this.counter--;}
});
Object.defineProperty(obj, "add", {
  set : function (value) {this.counter += value;}
});
Object.defineProperty(obj, "subtract", {
  set : function (value) {this.counter -= value;}
});
javascript counter accessor
2个回答
0
投票

这里不是真正的突变/不是突变,而是关于是否需要传递参数(set-位于=运算符的右侧)或不传递参数(get)。如果看一下W3Schools给出的示例:

// Play with the counter:
obj.reset;
obj.add = 5;
obj.subtract = 1;
obj.increment;
obj.decrement;

您会注意到addsubtract(“设置者”)具有参数(5和1),而reset /increment/ decrement没有任何参数(“获取器”) 。


0
投票

[set需要=运算符右侧的值。

obj.add = 5

[get根本不需要=,因此就没有其他值。

obj.increment

就是说,这是一个非常人为的例子。如果您的getter和setter名称是动词,则可能只希望它们成为函数。

© www.soinside.com 2019 - 2024. All rights reserved.