使用两个变量使用getter和setter分配一个值

时间:2017-04-19 18:08:21

标签: javascript

我在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。

2 个答案:

答案 0 :(得分:1)

this.log分别指obj.loglanguage.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)

此处使用logconsole.log完全无关;在这两种情况下,setter或getter使用的基础数据模型恰好位于名为log的属性中。它可以被称为任何东西。

两个不同的页面包含名为log的属性的示例,这不是巧合,但是,因为它们都是由MDN上的同一用户Sevenspade创作的: