我在Google上搜索JavaScript getter setter。
以下是getter的示例:
var obj = {
log: ['test'],
get latest() {
if (this.log.length == 0) return undefined;
return this.log[this.log.length - 1];
}
}
console.log(obj.latest); // Will return "test".
这是一个二传手的例子:
var language = {
set current(name) {
this.log.push(name);
},
log: []
}
language.current = 'EN';
console.log(language.log); // ['EN']
language.current = 'FA';
console.log(language.log); // ['EN', 'FA']
问:问
log
只是巧合吗?因为他们使用console.log来输出language.log。
答案 0 :(得分:1)
this.log
分别指obj.log
和language.log
,它是在自定义对象内定义的具有该名称的数组。这只是一个巧合,就像Console.log()方法一样命名。
https://developer.mozilla.org/en/docs/Web/API/Console/log
var obj = {
myProperty: ['test'],
get latest() {
if (this.myProperty.length == 0) return undefined;
return this.myProperty[this.myProperty.length - 1];
}
}
console.log(obj.latest); // Will return "test".

var language = {
set current(name) {
this.myProperty.push(name);
},
myProperty: []
}
language.current = 'EN';
console.log(language.myProperty); // ['EN']
language.current = 'FA';
console.log(language.myProperty); // ['EN', 'FA']

答案 1 :(得分:1)
此处使用log
与console.log
完全无关;在这两种情况下,setter或getter使用的基础数据模型恰好位于名为log
的属性中。它可以被称为任何东西。
两个不同的页面包含名为log
的属性的示例,这不是总巧合,但是,因为它们都是由MDN上的同一用户Sevenspade创作的: