【问题标题】:What this "get" in JavaScript object means?JavaScript 对象中的这个“get”是什么意思?
【发布时间】:2011-09-13 11:24:57
【问题描述】:

看看这个脚本:

var human = 
{
   firstName: 'Saeed',
   lastName: 'Neamati',
   get fullName() {
       return this.firstName + ' ' + this.lastName;
   }
}

我不知道get 在这种情况下是什么意思。

【问题讨论】:

标签: javascript


【解决方案1】:

它标识了读取属性时返回的对象property

https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/get

【讨论】:

  • 这仅适用于 ES5。将Object.defineProperty 与适当的垫片一起使用会更省钱
  • 它似乎在非ie浏览器中得到了相当好的支持; robertnyman.com/javascript/…
  • It works 在 Chrome、Safari、Firefox 和 Opera 上。不是 IE。 OMG,微软未能遵守标准,让成千上万的开发人员和数百万用户的生活变得更糟!我们最好提醒媒体。这将是一个大新闻!微软无可挑剔的声誉将破灭!
  • @Malvolio 它确实适用于除 IE
  • @Raynos -- 这就是为什么我鼓励人们利用 IE memory-cycle bug,以便用户有更明显的理由将他们的 IE 升级到真正的浏览器。尽管仍有相当多的人使用 IE,但人类进步的进程将明显放缓。
【解决方案2】:

这是一个属性。 你可以这样使用它:

console.log(human.fullName); //Saeed Neamati

这是一个在访问该属性时调用的函数,并返回值。

还有可用的设置器:

var human = 
{
   firstName: 'Saeed',
   lastName: 'Neamati',
   get fullName() {
       return this.firstName + ' ' + this.lastName;
   }
   set fullName(val) {
       var parts = val.split(' ');
       this.firstName = parts[0];
       this.lastName = parts[1];
   }
}

human.fullName = "Henry Miller";

尽管它可能很酷,但并非所有浏览器都支持它。所以最好不要使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多