我以为我了解访问器中获取和设置函数的目的。但是在教程(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;}
});
这里不是真正的突变/不是突变,而是关于是否需要传递参数(set
-位于=运算符的右侧)或不传递参数(get
)。如果看一下W3Schools给出的示例:
// Play with the counter:
obj.reset;
obj.add = 5;
obj.subtract = 1;
obj.increment;
obj.decrement;
您会注意到add
和subtract
(“设置者”)具有参数(5和1),而reset
/increment
/ decrement
没有任何参数(“获取器”) 。
[set
需要=
运算符右侧的值。
obj.add = 5
[get
根本不需要=
,因此就没有其他值。
obj.increment
就是说,这是一个非常人为的例子。如果您的getter和setter名称是动词,则可能只希望它们成为函数。