CoffeeScript: 在对象初始化器中的Getter/Setter

9 浏览
0 Comments

CoffeeScript: 在对象初始化器中的Getter/Setter

ECMAScript允许我们定义如下的getter或setter:

[text/javascript]

var object = {
  property: 7,
  get getable() { return this.property + 1; },
  set setable(x) { this.property = x / 2; }
};

如果我使用一个类,我可以绕过这个问题:

[text/coffeescript]

"use strict"
Function::trigger = (prop, getter, setter) ->
      Object.defineProperty @::,
              get: getter
              set: setter               
class Class
      property: ''
      @trigger 'getable', ->
               'x'
      member: 0

但是如果我想直接在对象上定义trigger - 而不使用defineProperty / -ies,我想做类似下面的事情(这种方式不起作用):

[text/x-pseudo-coffeescript]

object =
  property: 'xhr'
  get getable: 'x'

在JavaScript中可以正常工作,没有任何问题,而且我不希望在使用CoffeeScript时出现退化。有没有一种方法可以像在JavaScript/ECMAScript中那样轻松地做到这一点?谢谢。

0